Collections工具类
Collections工具类使用
在集合框架中给我们提供相应的工具类,这个工具类存放在java.util包中,类名是Collections,它是专门用来操作集合的工具类,并且其中的方法都是静态的,不需要创建对象就可以使用。
1,获取Collection最值。
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) 获取集合中最大元素(按照默认比较方式)
public static T max(Collection<? extends T> coll,Comparator<? super T> comp)获取集合中最大元素(按照指定比较器比较方式)
public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)获取集合中最小元素(按照默认比较方式)
public static T min(Collection<? extends T> coll,Comparator<? super T> comp)获取集合中最小元素(按照指定比较器比较方式)
2,对List集合排序,也可以二分查找。
public static <T extends Comparable<? super T>> void sort(List list)对集合排序(按照默认比较方式)
public static void sort(List list,Comparator<? super T> c)对集合排序(按照指定比较器比较方式)
public static int binarySearch(List<? extends Comparable<? super T>> list,T key)二分法查找
3,对排序逆序。
public static Comparator reverseOrder() 对集合原有排序强行逆转
4,可以将非同步的集合转成同步的集合。
public static List synchronizedList(List list)将非同步List集合转成同步List集合
5,获取任意集合的枚举对象
public static Enumeration enumeration(Collection c)
这些方法只需要练习,掌握其使用规律即可。它们都是用来辅助我们操作集合的。
Arrays工具类-集合和数组的互转
Arrays:用于操作数组的工具类。类中定义的都是静态工具方法
1,对数组排序。sort
2,二分查找。binarySearch
3,数组复制。copyOf
4,对两个数组进行元素的比较,判断两个数组是否相同。equals
5,将数组转成集合。public static List asList(T… a)
数组的其他方法,在第五天学习数组时,咱们都做过简单介绍,这里重点介绍将数组转成集合。
为什么将数组转成集合?就为了使用集合的方法操作数组中的元素。但是不要使用增删等改变长度的方法。add remove 发生UnsupportedOperationException,把数组转成集合后,集合的长度是固定,无法增删。
注意一下细节问题:
int[] arr = {34,21,67};
List list = Arrays.asList(arr);
System.out.println(list);
结果:[[I@18b3364]
如果数组中存储的是基本数据类型,那么转成集合,数组对象会作为集合中的元素存在。
数组中元素时引用数据类型时,转成,数组元素会作为集合元素存在。
Integer[] arr = {34,21,67};
List list = Arrays.asList(arr);
System.out.println(list);
结果:[34, 21, 67]
集合转成数组:使用Collections中的toArray方法。
Collection<String> c = new ArrayList<String>();
c.add("haha1");
c.add("haha2");
c.add("haha3");
c.add("haha4");
String[] str_arr = c.toArray(new String[c.size()]);
System.out.println(Arrays.toString(str_arr));
如果传递的数组的长度小于集合的长度,会创建一个同类型的数组长度为集合的长度。
如果传递的数组的长度大于了集合的长度,就会使用这个数组,没有存储元素的位置为null。
长度最好直接定义为和集合长度一致。