•Collections是一个操作Set、List 和Map等集合的工具类
Collections作为一个工具类,它里面的方法都是静态的。它没有对外提供构造函数,因为他不需要创建对象,他并未封装特有数据。
代码示例:
//定义排序功能
public static void sortDemo()
{
//创建List集合,并添加一些字符串元素
List<String> li = new ArrayList();
li.add("nbc");
li.add("jhkf");
li.add("ippkbhbsiw");
li.add("vhbdbw");
li.add("fce");
//按添加元素顺序打印元素
sop(li);
//对元素进行自然排序,再打印元素
Collections.sort(li);
sop(li);
//对元素进行自定义的比较器方法进行排序,再打印元素
Collections.sort(li, new StringLenComp());
sop(li);
int i = halfSearch(li, "ippkbhbsiw", new StringLenComp());
sop(i);
}
//定义获取最大值的功能
public static void maxDemo()
{
//创建List集合,并添加一些字符串元素
List<String> li = new ArrayList();
li.add("nbc");
li.add("jhkf");
li.add("ippkbhbsiw");
li.add("vhbdbw");
li.add("fce");
//对元素进行自然排序,再打印元素
Collections.sort(li);
sop(li);
//根据指定的比较器比较方法获取最大值,并打印
String max = Collections.max(li, new StringLenComp());
sop(max);
//调用带比较器参数的折半查找方法
Collections.sort(li, new StringLenComp());
sop(li);
}
//定义获取指定元素角标的功能
public static void binarySearchDemo()
{
//创建List集合,并添加一些字符串元素
List<String> li = new ArrayList();
li.add("nbc");
li.add("jhkf");
li.add("ippkbhbsiw");
li.add("vhbdbw");
li.add("fce");
//对元素进行自然排序,并打印元素
Collections.sort(li);
sop(li);
//对指定元素进行搜索,获取角标,并打印角标
int index = Collections.binarySearch(li, "ippkbhbsiw");
sop("index="+index);
//调用halfSearch折半查找功能。
int index2 = halfSearch(li, "g");
sop(index2);
}
public static void fillDemo()
{
//创建List集合,并添加一些字符串元素
List<String> li = new ArrayList();
li.add("nbc");
li.add("jhkf");
li.add("ippkbhbsiw");
li.add("vhbdbw");
li.add("fce");
//打印原来集合
sop(li);
//把集合中的所有元素都替换成itheima,并打印。
Collections.fill(li, "itheima");
sop(li);
}
public static void replaceAllDemo()
{
//创建List集合,并添加一些字符串元素
List<String> li = new ArrayList();
li.add("nbc");
li.add("jhkf");
li.add("ippkbhbsiw");
li.add("vhbdbw");
li.add("fce");
//打印原来集合
sop(li);
//把集合中的 fce 替换成 itheima,并打印
Collections.replaceAll(li, "fce", "itheima");
sop(li);
//把集合中元素进行反转,并打印
Collections.reverse(li);
sop(li);
//把List集合中的2角标和3角标互换位置。
Collections.swap(li, 2, 3);
sop(li);
//使集合元素随机排序
Collections.shuffle(li);
sop(li);
}
Collection 和 Collections的区别:
Collections是个java.util下的类,是针对集合类的一个工具类,提供一系列静态方法,实现对集合的查找、排序、替换、线程安全化(将非同步的集合转换成同步的)等操作。
Collection是个java.util下的接口,它是各种集合结构的父接口,继承于它的接口主要有Set和List,提供了关于集合的一些操作,如插入、删除、判断一个元素是否其成员、遍历等。
* Arrays:是操作数组的工具类。里面都是静态方法。
*
* asList:将数组变成List集合。
代码示例:
import java.util.Arrays;
import java.util.List;
public class ArraysDemo
{
public static void main(String[] args)
{
//定义一个数组
int[] arr = {3,4,5,6,7,8,9};
//返回指定数组内容的字符串表示形式。
String s = Arrays.toString(arr);
//打印转换后的字符串
System.out.println(s);
//把数组变成List集合的好处。
//可以使用集合的思想和方法来操作数组中的元素。
//将数组变成集合后,不可以使用集合的增删方法,因为数组的长度是固定的。。
//如果强制增删会发生UnsupportedOperationException不支持的操作异常。
String[] str = {"ff","vv","bb","dd"};
//将字符串数组变成List集合
List<String> li = Arrays.asList(str);
//li.add("mm");//UnsupportedOperationException不支持的操作异常。
//按照List集合的方法操作
System.out.println(li.contains("vv"));
//打印li集合
System.out.println(li);
/* 如果数组中的元素都是对象,那么变成集合时,数组中的元素就会直接转成集合中的元素。
* 如果数组中的元素是基本数据类型,那么会将该数组作为集合中的元素存在。
* */
Integer[] arr2 = {3,4,5,6,7,8,9};
List<Integer> lt = Arrays.asList(arr2);
sop(lt);
}
//打印功能
public static void sop(Object obj)
{
System.out.println(obj);
}
}
集合变数组:用的是Collection接口中的方法:toArray();
如果给toArray传递的指定类型的数据长度小于了集合的size,那么toArray方法,会自定再创建一个该类型的数据,长度为集合的size。
如果传递的指定的类型的数组的长度大于了集合的size,那么toArray方法,就不会创建新数组,直接使用该数组即可,并将集合中的元素存储到数组中,其他为存储元素的位置默认值null。
所以,在传递指定类型数组时,最好的方式就是指定的长度和size相等的数组。
将集合变成数组后有什么好处?限定了对集合中的元素进行增删操作,只要获取这些元素即可。
------- android培训、 java培训、期待与您交流! ----------