一:介绍
1.介绍
里面都是静态方法。
可以直接调用。
Collections是集合框架中的一个工具类。该类中的方法都是静态的
提供的方法中有可以对list集合进行排序,二分查找等方法。
通常常用的集合都是线程不安全的。因为要提高效率。 如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。
二:Collections程序
1.sort的使用
除了使用自然排序,还可以使用的是添加比较器。
1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.Comparator; 4 public class Test66 { 5 public static void main(String[] args) { 6 sortDemo1(); 7 } 8 public static void sortDemo1(){ 9 ArrayList<String> al=new ArrayList<>(); 10 al.add("abbdd"); 11 al.add("o"); 12 al.add("bcd"); 13 al.add("bqpr"); 14 System.out.println("随机打印:"+al); 15 Collections.sort(al); //基础的自然排序 16 System.out.println("基础的自然排序"+al); 17 Collections.sort(al,new StrLenComparator());//先根据长度排序 18 System.out.println("先根据长度排序"+al); // 19 } 20 } 21 class StrLenComparator implements Comparator<String>{ 22 public int compare(String s1, String s2) { 23 if(s1.length()>s2.length()){ 24 return 1; 25 } 26 if(s1.length()<s2.length()){ 27 return -1; 28 } 29 return s1.compareTo(s2); 30 } 31 32 }
2.运行程序
3.binarySearch方法
1 import java.util.ArrayList; 2 import java.util.Collections; 3 4 public class Test67 { 5 public static void main(String[] args) { 6 int index=halfDemo1(); 7 System.out.println("index="+index); 8 } 9 public static int halfDemo1(){ 10 ArrayList<String> al=new ArrayList<>(); 11 al.add("abbdd"); 12 al.add("o"); 13 al.add("bcd"); 14 al.add("bqpr"); 15 Collections.sort(al); 16 int index=Collections.binarySearch(al, "bqpr");//需要已排序 17 return index; 18 } 19 }
4.运行的结果
5.max的使用
依然分两种使用方式。
1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.Comparator; 4 import java.util.List; 5 6 public class Test68 { 7 8 public static void main(String[] args) { 9 maxDemo(); 10 } 11 public static void maxDemo(){ 12 List<String> list = new ArrayList<String>(); 13 list.add("abcd"); 14 list.add("aaa"); 15 list.add("zz"); 16 list.add("kkkkk"); 17 list.add("qq"); 18 list.add("z"); 19 Collections.sort(list); 20 System.out.println(list); 21 //基础的max 22 String max1 = Collections.max(list); 23 System.out.println("max1="+max1); 24 //调用比较器的max 25 String max2 = Collections.max(list,new StrLenComparator2()); 26 System.out.println("max2="+max2); 27 } 28 29 } 30 class StrLenComparator2 implements Comparator<String>{ 31 public int compare(String s1, String s2) { 32 if(s1.length()>s2.length()){ 33 return 1; 34 } 35 if(s1.length()<s2.length()){ 36 return -1; 37 } 38 return s1.compareTo(s2); 39 } 40 41 }
6.reverseOrder方法
使用StrLenComparator比较器之后在进行逆序。
就是在reverse之后在逆向排序输出。
1 import java.util.Collections; 2 import java.util.Iterator; 3 import java.util.TreeSet; 4 public class Test69 { 5 public static void main(String[] args) { 6 orderDemo(); 7 } 8 public static void orderDemo(){ 9 TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new StrLenComparator())); 10 ts.add("abcde"); 11 ts.add("aaa"); 12 ts.add("k"); 13 ts.add("cc"); 14 Iterator it = ts.iterator(); 15 while(it.hasNext()) 16 { 17 System.out.println(it.next()); 18 } 19 } 20 }
7.运行结果
8.toArray方法
为什么要将集合变数组?
为了限定对元素的操作。不需要进行增删了。
1 import java.util.ArrayList; 2 import java.util.Arrays; 3 4 public class Test70 { 5 public static void main(String[] args) { 6 ArrayList<String> al = new ArrayList<String>(); 7 al.add("abc1"); 8 al.add("abc2"); 9 al.add("abc3"); 10 String[] arr = al.toArray(new String[al.size()]); 11 System.out.println(Arrays.toString(arr)); 12 } 13 14 }
9.运行结果
三:Arrays程序
1.toString
1 import java.util.Arrays; 2 public class Test71 { 3 public static void main(String[] args) { 4 int[] arr={1,4,2,7,4}; 5 String str=Arrays.toString(arr); 6 System.out.println("str="+str); 7 } 8 }
2.运行结果
3.asList
将数组变成list集合
注意:将数组变成集合,不可以使用集合的增删方法。
1 import java.util.Arrays; 2 import java.util.List; 3 public class Test72 { 4 public static void main(String[] args) { 5 //int 6 int[] nums1 = {2,4,5}; 7 List<int[]> li = Arrays.asList(nums1); 8 System.out.println(li); 9 //Integer 10 Integer[] nums2={3,6,5}; 11 List<Integer> li2=Arrays.asList(nums2); 12 System.out.println(li2); 13 //String 14 String[] arr={"dsds","jun","opu"}; 15 List<String> liArr=Arrays.asList(arr); 16 System.out.println(liArr); 17 18 } 19 }
4.运行结果以及解析
四:增强for循环
1.String的
1 import java.util.ArrayList; 2 3 public class Test73 { 4 public static void main(String[] args) { 5 ArrayList<String> al = new ArrayList<String>(); 6 al.add("abc1"); 7 al.add("abc2"); 8 al.add("abc3"); 9 for(String s : al) 10 { 11 System.out.println(s); 12 } 13 System.out.println(al); 14 } 15 }
2.map
1 import java.util.HashMap; 2 import java.util.Map; 3 import java.util.Set; 4 5 public class Test74 { 6 public static void main(String[] args) { 7 Map<Integer,String> hm=new HashMap<>(); 8 hm.put(1, "zhangsan"); 9 hm.put(2, "lisi"); 10 hm.put(3, "wangwu"); 11 //keySet 12 Set<Integer> keyset=hm.keySet(); 13 for(Integer i : keyset){ 14 System.out.println(hm.get(i)); 15 } 16 //============= 17 System.out.println("=========="); 18 //entrySet 19 for(Map.Entry<Integer, String> entry:hm.entrySet() ){ 20 System.out.println(entry.getKey()+":"+entry.getValue()); 21 } 22 23 } 24 25 }
3.运行结果
五:静态导入
1.格式
import static java.lang.System.*;//导入了System类中所有静态成员。
2.使用
out.println(“al”);