300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换

java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换

时间:2020-05-18 22:03:35

相关推荐

java中集合类的转换_Java中的两个常用工具类及集合数组的相互转换

为了编程人员的方便及处理数据的安全性,Java特别提供了两个非常有用的工具类:

一、Collections

1、Collections类的特点:

集合框架的工具类。里面定义的都是静态方法。

2、Collections和Collection有什么区别?

Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。

它有两个常用的子接口,

List:对元素都有定义索引。有序的。可以重复元素。

Set:不可以重复元素。无序。

Collections是集合框架中的一个工具类。该类中的方法都是静态的

提供的方法中有可以对list集合进行排序,二分查找等方法。

通常常用的集合都是线程不安全的。因为要提高效率。

如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。

3、Collections的常用方法

1)排序

2)取最大最小值

3)二分查找

4)替换

使用指定元素替换指定列表中的所有元素

5)反转

6)线程同步

4、对这些方法的演示如下:

import java.util.*;

class CollectionsDemo

{

public static void main(String[] args)

{

sortDemo();

}

public static void binarySearchDemo()

{

List list = new ArrayList();

list.add("abcd");

list.add("aaa");

list.add("zz");

list.add("kkkkk");

list.add("qq");

list.add("z");

Collections.sort(list,new StrLenComparator());

sop(list);

int index = Collections.binarySearch(list,"aaaa");

sop("index="+index);

}

public static void maxDemo()

{

List list = new ArrayList();

list.add("abcd");

list.add("aaa");

list.add("zz");

list.add("kkkkk");

list.add("qq");

list.add("z");

Collections.sort(list);

sop(list);

String max = Collections.max(list/*,new StrLenComparator()*/);

sop("max="+max);

}

public static void sortDemo()

{

List list = new ArrayList();

list.add("abcd");

list.add("aaa");

list.add("zz");

list.add("kkkkk");

list.add("qq");

list.add("z");

sop(list);

Collections.sort(list);

//Collections.sort(list,new StrLenComparator());

//Collections.swap(list,1,2);

sop(list);

}

public static void replaceAllDemo()

{

List list = new ArrayList();

list.add("abcd");

list.add("aaa");

list.add("zz");

list.add("kkkkk");

sop(list);

Collections.replaceAll(list,"aaa","pp");

sop(list);

Collections.reverse(list);

sop(list);

}

public static void sop(Object obj)

{

System.out.println(obj);

}

}

class StrLenComparator implements Comparator

{

public int compare(String s1,String s2)

{

if(s1.length()>s2.length())

return 1;

if(s1.length()

return -1;

return pareTo(s2);

}

}

二、Arrays

1、特点:

用于操作数组的工具类。里面都是静态方法。

2、Arrays类的一个非常重要的方法

public static

ListasList(T...a)

该方法将返回一个受指定数组支持的固定大小的列表

3、把数组变成list集合有什么好处?

可以使用集合的思想和方法来操作数组中的元素。

注意:

1) 将数组变成集合,不可以使用集合的增删方法。因为数组的长度是固定。如果你增删。那么会反生UnsupportedOperationException。

2) 如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素;如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。

4、示例代码如下:

import java.util.*;

class ArraysDemo

{

public static void main(String[] args)

{

int[] arr = {2,4,5};

System.out.println(Arrays.toString(arr));

String[] arr = {"abc","cc","kkkk"};

List list = Arrays.asList(arr);

//list.add("qq");//UnsupportedOperationException,

sop(list);

//int[] nums = {2,4,5};

Integer[] nums = {2,4,5};

sop(li);

}

public static boolean myContains(String[] arr,String key)

{

for(int x=0;x

{

if(arr[x].equals(key))

return true;

}

return false;

}

public static void sop(Object obj)

{

System.out.println(obj);

}

}

三、集合变数组

1、实现的方法

使用Collection接口中的toArray()方法。

2、指定类型的数组到底要定义多长呢?

当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。

当指定类型的数组长度大于了集合的size,就不会新创建了数组。而是使用传递进来的数组。

所以创建一个刚刚好的数组最优。

3、为什么要将集合变数组?

为了限定对元素的操作。不需要进行增删了。

4、示例代码如下:

import java.util.*;

class CollectionToArray

{

public static void main(String[] args)

{

ArrayList al = new ArrayList();

al.add("abc1");

al.add("abc2");

al.add("abc3");

String[] arr = al.toArray(new String[al.size()]);

System.out.println(Arrays.toString(arr));

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。