Collctions操作集合的工具类
- 不能存取
- 主要做算法
数组和集合间的互相转换
public static void asListTest(List list){
/**
* 提供数组类型和长度,
* 长度小于list就和list相等
*/
Integer[] objects = (Integer[]) list.toArray(new Integer[0]);
//[48, 15, 30, 180, 200]
System.out.println(Arrays.toString(objects));
/**
* 因为数组长度固定
* 这个集合是个"受限集合":不能增删
*/
list = Arrays.asList(objects);
//list.add(0);//UnsupportedOperationException不支持的参数异常
//[48, 15, 30, 180, 200]
System.out.println(list);
//------------------------------------------
/**
* 集合中只能存储对象,
* 基本类型的数组也会报错
*/
Integer/*int*/[] nums = {1,2,3,4};
/**
* 系统认为你存储的元素全部都是int[]
*/
List<Integer/*int[]*/> ints = Arrays.asList(nums);
//[1, 2, 3, 4]
System.out.println(ints);
}
排序,二分查找,复制,反转和打乱
public class CollectionSDemo01 {
public static void main(String[] args) {
List list = new ArrayList();
list.add(180);
list.add(200);
list.add(30);
list.add(48);
list.add(15);
//----------------------------------------------------
Collections.sort(list,new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2) {
return o1.intValue() - o2.intValue();
}
});
//排序算法[15, 30, 48, 180, 200]
System.out.println("排序算法"+list);
//----------------------------------------------
System.out.println("二分查找返回索引位置:"+Collections.binarySearch(list,48));//2
List dest = new ArrayList();
/**
* 新集合的长度必须大于或等于原集合
*
* copy:[15, 30, 48, 180, 200]
*/
for (Object o : list) {
dest.add(0);
}
Collections.copy(dest,list);
System.out.println("copy:"+dest);
//---------------------------------------------------
//reverse反转:[200, 180, 48, 30, 15]
Collections.reverse(list);
System.out.println("reverse反转:"+list);
//--------------------------------------------------
//shuffle打乱:[200, 30, 180, 48, 15]
Collections.shuffle(list);
System.out.println("shuffle打乱:"+list);
//---------------------------------------------
asListTest(list);
}
}
LinkedHashSet和LinkedHashMap,有序的HashSet和HashMap
知道一下就可以了