黑马程序员-JAVA基础-Java 集合之Collections 工具类
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) 返回指定列表支持的同步(线程安全的)列表。