java学习之集合框架工具类
来源:互联网 发布:网络推广月工作计划 编辑:程序博客网 时间:2024/05/16 10:34
Collections是集合框架的工具类,里面的方法都是静态的
下图中List存放的是String类型,所以sort是根据元素的自然顺序进行排序,即字符串排序,
如果List存放的是自定义类类型,那么需要自定义比较器,作为sort的参数,才能进行排序。
public static void demo1(){List<String> list = new ArrayList<String>();list.add("ghj");list.add("abcd");list.add("cba");list.add("zzz");list.add("klg");System.out.println(list);//对list集合进行指定顺序的排序Collections.sort(list);System.out.println(list);}
二分查找是对有序序列进行的,所以在使用binarySearch之前需要先对list集合里面的元素进行排序。
如果没有找到指定元素,则返回负数,代表插入的位置点减一。如下图中查找"dgs",没有找到,所以
返回负数,“dgs”的插入点在下标为2个位置,所以是-2。再减一就是返回-3。
为什么要减一?
因为如果插入点是0的话没有减一直接返回会引起歧义,不能判断是找到还是没找到。所以要减一,把0变成-1。
private static void demo2() {List<String> list = new ArrayList<String>();list.add("ghj");list.add("abcd");list.add("cba");list.add("zzz");list.add("klg");System.out.println(list);//[ghj, abcd, cba, zzz, klg]//对list集合进行指定顺序的排序Collections.sort(list);//[abcd, cba, ghj, klg, zzz]System.out.println(list);int index = Collections.binarySearch(list, "dgs");System.out.println("index = " + index);//-3 负数表示没有找到,返回插入点减1,即-2-1}
reverseOrder方法返回一个逆转实现了Comparable接口的对象collection的自然顺序的比较器,所以输出时就逆序了。
private static void demo3() {TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());ts.add("abc");ts.add("mer");ts.add("bgh");ts.add("kji");ts.add("zpw");System.out.println(ts);//[zpw, mer, kji, bgh, abc]}
replaceAll方法的实现机制是:先使用集合中的indexOf方法找到"cba"的索引,然后用set方法指定索引,
指定替换的值,就实现了替换功能。
private static void demo4() {List<String> list = new ArrayList<String>();list.add("ghj");list.add("abcd");list.add("cba");list.add("zzz");System.out.println(list);//[ghj, abcd, cba, zzz]Collections.replaceAll(list, "cba", "uio");System.out.println(list);//[ghj, abcd, uio, zzz]}
collections中的静态方法synchronizedList可以返回列表支持的同步(线程安全的)列表。
Arrays:集合框架的工具类。里面的方法都是静态的。
Arrays中的asList方法可以将数组转换成List集合。
public static void demo(){/* * 好处:其实可以使用集合的方法操作数组中的元素。 * 注意:数组的长度是固定的,所以对于集合的增删方法是不可以使用的 * 否则会发生UnsupportedOperationException */String[] arr = {"abc", "haha", "lgds"};List<String> list = Arrays.asList(arr);boolean b = list.contains("haha");System.out.println(b);//true}
如果数组中的元素是对象,那么转成集合时,直接将数组中的元素进行集合存储。
如果数组中的元素是基本类型数值,那么会将该数组作为集合中的元素进行存储,所以下图中打印出来的size是1,
说明list集合中只有一个元素。
public static void demo1() {int[] arr = {24, 13, 35, 41};List list = Arrays.asList(arr);System.out.println(list);//[[I@52e922]System.out.println("size = " + list.size());//size = 1}
集合转成数组,使用的就是Colletion接口中的toArray方法。
集合转成数组,可以对集合中的元素操作的方法进行限定,不允许对其进行增删
toArray方法需要传入一个指定类型的数组。
如果长度小于集合的size,那么该方法会创建一个同类型并和集合相同size的数组,如下图第8行。
如果长度大于集合的size,那么该方法就会使用指定的数组,存储集合的元素,其他位置默认为null,如下图第10行。
所以建议最好长度就指定为集合的size,即list.size()
public static void demo1() {List<String> list = new ArrayList<String>();list.add("abc1");list.add("abc2");list.add("abc3");String[] arr1 = list.toArray(new String[2]);System.out.println(Arrays.toString(arr1));//[abc1, abc2, abc3]String[] arr2 = list.toArray(new String[5]);System.out.println(Arrays.toString(arr2));//[abc1, abc2, abc3, null, null]}
0 0
- java学习之集合框架工具类
- Java学习记录之集合框架工具类
- java--------学习之《集合框架的工具类的应用》
- Java集合框架之Collections工具类
- java集合框架之集合工具类Arrays类
- 鸟哥Java学习之集合框架工具类--常用对象API
- java--集合框架工具类
- java学习之集合框架
- java学习之集合框架
- java学习之集合框架
- Java学习之集合框架
- java学习之集合框架
- 黑马程序员--Java基础之集合框架工具类
- 黑马程序员 java基础集合框架之集合工具类Collections
- JAVA集合类框架学习
- Java集合类框架学习
- Java集合框架类学习
- 集合框架之Collections静态工具类
- 面试题24:二叉搜索树的后序遍历序列
- openCv4Android之fitLine中各算法总结
- 小混混之自我提高篇——目标
- 指针数组与数组指针
- vmlinux,vmlinuz,bzimage,zimage,initrd.img uimage的区别与联系
- java学习之集合框架工具类
- Linux线程互斥锁
- Unable to instantiate fragment make sure class name exists, is public, and has an empty constructor
- 用命令行运行hadoop程序WordCount
- 找到一篇关于form以post、get方式提交数据中文乱码问题总结
- Web前后端分离:MVC简介
- android自定义View实现图片上传进度显示(仿手机QQ上传效果)
- 最近对IT行业收入的话题火起来了,我也来说说毕业三年混到20万的经历
- ios开发-Autolayout