---------------------- android培训、java培训、期待与您交流! ----------------------
集合工具类
集合框架的工具类。
Collections:集合框架的工具类。里面定义的都是静态方法。
Collections和Collection有什么区别?
Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。
它有两个常用的子接口,
List:对元素都有定义索引。有序的。可以重复元素。
Set:不可以重复元素。无序。
Collections是集合框架中的一个工具类。该类中的方法都是静态的
提供的方法中有可以对list集合进行排序,二分查找等方法。
通常常用的集合都是线程不安全的。因为要提高效率。
如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。
import java.util.*; class CollectionsDemo { public static void main(String[] args) { sortDemo(); } public static void binarySearchDemo() { List<String> list = new ArrayList<String>(); list.add("abcd"); list.add("aaa"); list.add("zz"); list.add("kkkkk"); list.add("qq"); list.add("z"); Collections.sort(list,new StrLenComparator());// 根据元素的自然顺序 对指定列表按升序进行排序。 sop(list); int index = Collections.binarySearch(list,"aaaa");//使用二分搜索法搜索指定列表,以获得指定对象。 sop("index="+index); } public static void maxDemo() { List<String> list = new ArrayList<String>(); list.add("abcd"); list.add("aaa"); list.add("zz"); list.add("kkkkk"); list.add("qq"); list.add("z"); Collections.sort(list);// 根据元素的自然顺序 对指定列表按升序进行排序。 sop(list); // 根据元素的自然顺序,返回给定 collection 的最大元素。也可以使用自己指定的比较器。 String max = Collections.max(list/*,new StrLenComparator()*/); sop("max="+max); } public static void sortDemo() { List<String> list = new ArrayList<String>(); list.add("abcd"); list.add("aaa"); list.add("zz"); list.add("kkkkk"); list.add("qq"); list.add("z"); sop(list); //Collections.sort(list);// 根据元素的自然顺序 对指定列表按升序进行排序。 //使用自己指定的比较器对集合进行排序。 Collections.sort(list,new StrLenComparator()); //Collections.swap(list,1,2);//交换集合中两个元素的位置。 sop(list); } public static void sop(Object obj) { System.out.println(obj); } } //如果需要按照自己指定的比较方法进行排序,可以创建一个比较器。 class StrLenComparator implements Comparator<String> { public int compare(String s1,String s2) { if(s1.length()>s2.length()) return 1; if(s1.length()<s2.length()) return -1; return s1.compareTo(s2); } }
import java.util.*; //按照与自然顺序相反的顺序进行比较。reseveOrder方法底层实现原理。 class StrComparator implements Comparator<String> { public int compare(String s1,String s2) { return s2.compareTo(s1); } } //按照字符串的长度进行比较。 class StrLenComparator implements Comparator<String> { public int compare(String s1,String s2) { if(s1.length()>s2.length()) return 1; if(s1.length()<s2.length()) return -1; return s1.compareTo(s2); } } class CollectionsDemo2 { public static void main(String[] args) { shuffleDemo(); } public static void shuffleDemo() { List<String> list = new ArrayList<String>(); list.add("abcd"); list.add("aaa"); list.add("zz"); list.add("kkkkk"); list.add("qq"); list.add("z"); sop(list); Collections.shuffle(list);//对集合元素的顺序进行随机置换。 sop(list); } public static void orderDemo() { //对不具备比较性的元素或者不是需求比较方法的元素可以指定一个比较器对集合中元素进行比较。 //使用reveseOrder方法进行反转以后得到一个反转比较方法后的比较器,作为参数传递进去。 TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new StrLenComparator())); //Collections.reverseOrder()可以返回一个与自然顺序相反的比较器。 //TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder()); ts.add("abcde"); ts.add("aaa"); ts.add("k"); ts.add("cc"); Iterator it = ts.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } public static void replaceAllDemo() { List<String> list = new ArrayList<String>(); list.add("abcd"); list.add("aaa"); list.add("zz"); list.add("kkkkk"); sop(list); //使用另一个值替换列表中出现的所有某一指定值。 Collections.replaceAll(list,"aaa","pp"); sop(list); Collections.reverse(list);//反转指定列表中元素的顺序。 sop(list); } public static void fillDemo() { List<String> list = new ArrayList<String>(); list.add("abcd"); list.add("aaa"); list.add("zz"); list.add("kkkkk"); sop(list); Collections.fill(list,"pp");//使用指定元素替换指定列表中的所有元素。 sop(list); } public static void sop(Object obj) { System.out.println(obj); } }
集合变数组。
Collection接口中的toArray方法。
<T> T[] toArray(T[] a)
返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。
1,指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组。长度为集合的size。
当指定类型的数组长度大于了集合的size,就不会新创建了数组。而是使用传递进来的数组。
所以创建一个刚刚好的数组最优。
2,为什么要将集合变数组?
为了限定对元素的操作。不需要进行增删了。
import java.util.*; class CollectionToArray { public static void main(String[] args) { ArrayList<String> al = new ArrayList<String>(); al.add("abc1"); al.add("abc2"); al.add("abc3"); //将集合中的元素存入数组中去。 String[] arr = al.toArray(new String[al.size()]); System.out.println(Arrays.toString(arr)); } }
Arrays:用于操作数组的工具类。
里面都是静态方法。
asList:将数组变成list集合
1.把数组变成list集合有什么好处?
可以使用集合的思想和方法来操作数组中的元素。
注意:
1.将数组变成集合,不可以使用集合的增删方法。
因为数组的长度是固定。只可以使用一下等不涉及增删的方法。
contains。
get
indexOf()
subList();
如果你增删。那么会反生UnsupportedOperationException,
如果数组中的元素都是对象。那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
import java.util.*; class ArraysDemo { public static void main(String[] args) { String[] arr = {"abc","cc","kkkk"}; List<String> list = Arrays.asList(arr); sop("contains:"+list.contains("cc"));//集合中判断是否包含某个元素。 //list.add("qq");//向转换后的集合中添加元素会出现UnsupportedOperationException, sop(list); //int[] num1 = {2,4,5}; //List<int[]> li = Arrays.asList(nums);会将该数组作为集合中的元素存在。 Integer[] nums = {2,4,5}; //将数组中元素作为集合中元素存在。 List<Integer> li = Arrays.asList(nums); sop(li); } //如果想要知道数组中是否包含一个元素,需要将数组遍历逐个比较,较为麻烦, //将数组转换为集合,可以使用集合中的操作方法,较为方便。 public static boolean myContains(String[] arr,String key) { for(int x=0;x<arr.length; x++) { if(arr[x].equals(key)) return true; } return false; } public static void sop(Object obj) { System.out.println(obj); } }
---------------------- android培训、java培训、期待与您交流! ----------------------
相关推荐
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490901
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490903
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490905
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490899
NULL 博文链接:https://huangminwen.iteye.com/blog/1157983
NULL 博文链接:https://997234900-qq-com.iteye.com/blog/1317427
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490705
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490907
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1491352
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1492498
黑马程序员Qt入门教程的相关文档。1 Qt概述 3 1.1 什么是Qt 3 1.2 Qt的发展史 4 1.3 支持的平台 4 1.4 Qt版本 4 1.5 Qt的安装 5 Linux Host 5 OS X Host 5 Windows Host 5 1.6 Qt的优点 5 2 创建Qt项目 6 2.1 使用...
黑马程序员出品,有四种代码生成模板可以选择,分别为springboot+springDataJPA微服务、SSH2+angularJS+bootstrap、SSH2+easyUI、SSM+dubbox+angularJS(服务层+Web层)
行时所需要的基本条件和许多 Java 基础类,例如,IO 类、GUI 控件类、网络类等。JRE 是提供给 普通用户使用的,如果你只想运行别人开发好的 Java 程序,那么,你的计算机上必须且只需安装 JRE。 JDK(Java ...
黑马程序员javaweb课程上课自制工具包,有兴趣的可以参考。
validate-api工具类校验类属性所需jar包集合
这是根据黑马程序员中关于Vue11天课程中,跟着视频编写的代码,一行行跟着写出来的,连备注基本也是和视频一样,用的是vscode开发工具,上传的资料已经把node_modules删除了,进入目录后,用cnpm i重新安装一下就...
掌握idea开发工具的安装 能够使用idea创建Java工程 能够使用idea创建包和类 了解idea的Java工程目录 了解idea字体的设置 掌握idea常用开发快捷键 了解项目的导入和删除 掌握方法定义的参数和返回值含义 了解方法的...
NULL 博文链接:https://lvwenwen.iteye.com/blog/1470696
ArrayList集合工具类