Java学习之集合框架工具类

一、Collections

Collections中的方法都是静态的

1 void sort(List<? extends Comparable<? super T>> list);//list集合元素必须具备比较性
2 void sort(List<T>,Comparator<? super T> c);//指定比较器,list集合元素可以不具备比较性
1 void swap(List<T>,int i,int j);//位置替换,相当于以下代码
2 //T temp = list.get(i);
3 //list.set(i,list.get(j));
4 //list.set(j,temp)
1 //二分查找(折半查找),List必须先排序再使用binarySearch
2 int binarySearch(List<? extends Comparable<? super T>> list,T key);
3 int binarySearch(List<? extends T> list,T key,Comparator<? super T> c);
1 //求最值
2 max(Collection<? extends T> coll);
3 max(Collection<? extends T> coll,Comparator<? super T> comp);
4 
5 min(Collection<? extends T> coll);
6 min(Collection<? extends T> coll,Comparator<? super T> comp);
 1 //逆转
 2 void reverse(List<?> list);
 3 Comparator<T> reverseOrder();//返回一个比较器,强行逆转实现了Comparable接口的对象collection的自然顺序
 4 Comparator<T> reverseOrder(Comparator<T> cmp);
 5 /*
 6 用法:
 7 1、TreeSet ts=new TreeSet(reverseOrder());
 8 
 9 2、sort(list,reverseOrder());
10 */
1 //替换
2 boolean replaceAll(List<T> list,T oldVal,T newVal);//替换指定值
3 //实现原理:
4 list.set(list.indexOf(oldVal,newVal));
1 //指定元素替换指定列表中所有元素
2 void fill(List<? super T> list , T obj);
3 
4 //随机对指定列表进行置换
5 void shuffle(List<?> list);
 1 //非同步的集合加锁
 2 List<T> synchronizedList(List<T> list);//返回同步List集合
 3 //原理:
 4 class MyCollections{
 5     public static List synchronizedList(List list){
 6         retutn new MyList(list)
 7     }
 8     private class MyList implements List{
 9         private List list;
10         private static final Object lock=new Object();
11         MyList(List list){
12             this.list=list;
13         }
14         
15         public boolean add(Object obj){
16             synchronized(lock){
17                 return list.add(obj);
18             }
19         }
20         public boolean remove(Object obj){
21             synchronized(lock){
22                 return list.remove(obj);
23             }
24         }
25     }
26 }

二、Arrays

 1 //二分查找
 2 binarySearch
 3 copyOf
 4 copyOfRange
 5 equals
 6 fill
 7 sort
 8 deepEquals(Object[] o1,Object[] o2);//深度比较,比较元素对象中的属性
 9 
10 List asList(数组);//将数组转成集合。
11 /*
12 好处:其实可以使用集合的方法操作数组。
13 注意:数组的长度是固定的,所以对于集合的增删方法是不可以使用的,否则会发生UnsupportedOperationException
14 
15 如果数组中的元素是对象,那么转成集合时,直接将数组中的元素作为集合中的元素
16 String arr={"ab","abc","abd","abe"};
17 List list = Arrays.asList(arr);
18 list元素("ab","abc","abd","abe")
19 如果数组中的元素时基本类型数值,那么将数组作为集合中的元素
20 int[] arr = {1,2,3,4};
21 List list = Arrays.asList(arr);
22 list元素(int[]数组对象)
23 */

 

上一篇:2020-1-12( java 8学习心得2)


下一篇:带有泛型,比较器和排序错误的Java类层次结构