黑马程序员-JAVA基础-Java 集合之Collections 工具类

时间:2023-02-24 23:02:34

------- android培训java培训、期待与您交流! ----------

  Collections 类中的方法是用来操作 Collection 集合的,而且Collections 中的方法全部是静态方法。

  如果为此类的方法所提供的 collection 或类对象为 null,则这些方法都将抛出 NullPointerException

  

一.常用的方法有:  

 

  static <T extends Comparable<? super T>> void sort(List<T> list)

    根据元素的自然顺序 对指定列表按升序进行排序。

  static <T> void sort(List<T> list, Comparator<? super T> c)
    根据指定比较器产生的顺序对指定列表进行排序。

  static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
    根据元素的自然顺序,返回给定 collection 的最大元素。
  static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp)
    根据指定比较器产生的顺序,返回给定 collection 的最大元素。  
  static <T> void fill(List<? super T> list, T obj)
    使用指定元素替换指定列表中的所有元素。  
  static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)
    使用另一个值替换列表中出现的所有某一指定值。
  static void reverse(List<?> list)
    反转指定列表中元素的顺序。 

 1 public class CollectionsDemo {
 2     public static void main(String[] args)
 3     {
 4         List<String> name = new ArrayList<String>() ; 
 5         
 6         name.add("sdffqew") ;
 7         name.add("wfw") ;
 8         name.add("wefuoh") ;
 9         name.add("fuheh") ;
10         name.add("hfuiowe") ; 
11         Show(name) ;
12         System.out.println("---------我是分割线--------");
13 //        根据元素的自然顺序排序。
14         Collections.sort(name) ;
15         Show(name) ;
16 //        根据指定的比较器进行排序:
17         System.out.println("---------我是分割线--------");
18         Collections.sort(name,new LengthComparator()) ; 
19         Show(name) ;
20 //        返回集合中最大的元素:
21         System.out.println("Collections.max(name) = " 
22                 + Collections.max(name))  ;
23 //        返回集合中最长的元素:
24         System.out.println("Colloections.max(name,new LengthComparator()) = "
25                 + Collections.max(name , new LengthComparator()));
26 //        反转列表:
27         Collections.reverse(name) ;
28         System.out.println("----------我是分割线---------");
29         Show(name) ;  
30 //        替换所有元素。
31         Collections.fill(name, "heima") ;
32         Show(name) ;
33     }
34     public static void Show(List<String> name)
35     {
36         Iterator it = name.iterator() ; 
37         while(it.hasNext())
38         {
39             System.out.println(it.next());
40         }
41     }
42 }
43 //定义一个比较器:按长度进行排序
44 class LengthComparator implements Comparator<String>
45 {
46     public int compare(String a , String b)
47     {
48         return a.length() - b.length() ;
49     }

 

 

二.reverseOrder 方法 

  static <T> Comparator<T> reverseOrder()

  返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。

  static <T> Comparator<T> reverseOrder(Comparator<T> cmp)

  返回一个比较器,它强行逆转指定比较器的顺序。

 1 public class CollectionsDemo2 {
 2     public static void main(String[] args)
 3     {
 4 //        TreeSet 集合 是按照 自然顺序排序的。
 5         Set<String> name = new TreeSet<String>() ;
 6         name.add("adsfad") ;
 7         name.add("adfefcf") ;
 8         name.add("dfgr") ; 
 9         name.add("ggdf") ;  
10         System.out.println(name);
11         ReverseOrderDemo() ;
12         System.out.println("-------------------------");
13         Set<String> test = new TreeSet<String>(new LengthComparator()) ;
14         test.add("adsfad") ;
15         test.add("adfefcf") ;
16         test.add("dfgr") ; 
17         test.add("ggdf") ; 
18         System.out.println(test);
19         ReverseOrderDemo1() ;
20     }   
21     public static void ReverseOrderDemo()
22     {
23 //        调用reverseOrder()方法;
24         Set<String> name = new TreeSet<String>(Collections.reverseOrder()) ;
25         name.add("adsfad") ;
26         name.add("adfefcf") ;
27         name.add("dfgr") ; 
28         name.add("ggdf") ;  
29         System.out.println(name);
30     }
31     public static void ReverseOrderDemo1()
32     {
33         Set<String> test = new TreeSet<String>(Collections.reverseOrder(new LengthComparator())) ;
34         test.add("adsfad") ;
35         test.add("adfefcf") ;
36         test.add("dfgr") ; 
37         test.add("ggdf") ; 
38         System.out.println(test);
39     }
40 }
41 //定义一个比较器:按长度进行排序
42 class LengthComparator implements Comparator<String>
43 {
44     public int compare(String a , String b)
45     {
46         int len = a.length() - b.length() ;
47         if(len != 0)
48             return len ; 
49         return a.compareTo(b) ;
50     }
51 }

 

 

三.线程同步的集合

  Collections 类有一类方法:synchronizedXXX(XXX xxx) 返回支持同步的集合。如:static <T> List<T> synchronizedList(List<T> list) 返回指定列表支持的同步(线程安全的)列表。