标签:二分法 arraylist 不能 二分 line post tail details class
java.util.Collections工具类提供非常多实用的方法。使得程序员操作集合类的时候更加的方便easy,这些方法都是静态的。
整个Collections工具类源代码几乎相同有4000行。我们针对一些典型的方法进行阐述。
public static final List EMPTY_LIST = new EmptyList<>();
public static final Map EMPTY_MAP = new EmptyMap<>();
public static final Set EMPTY_SET = new EmptySet<>();
public static <T> boolean addAll(Collection<?
super T> c, T… elements):向指定的集合c中增加特定的一些元素elements
案例2-1:
List<String> list = new ArrayList<>();
list.add("s2");
list.add("s4");
list.add("s1");
list.add("s3");
System.out.println(list);
Collections.addAll(list, "s5","s7",null,"s9");
System.out.println(list);
执行结果:
[s2, s4, s1, s3]
[s2, s4, s1, s3, s5, s7, null, s9]
public static <T> int binarySearch(List<?
extends Comparable<?
super T>> list, T key)
public static <T> int binarySearch(List<?
extends T> list, T key, Comparator<? super T> c)
利用二分法在指定的集合中查找元素,至于Comparable以及Comparator相信看过前面一些列博文的朋友应该非常清楚了。详细的也能够參考《Comparable与Comparator浅析》
public static <T extends Comparable<? super T>> void sort(List<T> list) 须要泛型T类本身支持Comparable接口
public static <T> void sort(List<T> list, Comparator<? super T> c)
详细举例能够參考《Comparable与Comparator浅析》
public static void shuffle(List<?> list)
public static void shuffle(List<?
> list, Random rnd)
混排。混排算法所做的正好与sort相反:它打乱在一个List中可能有的不论什么排列的踪迹。也就是说,基于随机源的输入重排list,这种排列具有同样的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的Game中非常实用。
案例5-1:
public static void test3()
{
List<String> list = new ArrayList<>();
list.add("s1");
list.add("s2");
list.add("s3");
list.add("s4");
Collections.shuffle(list);
System.out.println(list);
}
每次执行结果都不同。
有关反转主要有这三个方法:
> list)直接反转集合的元素
举几个案例来说明下使用方法。
案例6-1:
List<String> list = new ArrayList<>();
list.add("s1");
list.add("s2");
list.add("s3");
list.add("s4");
System.out.println(list);
Collections.reverse(list);
System.out.println(list);
执行结果:
[s1, s2, s3, s4]
[s4, s3, s2, s1]
案例6-2:
List<String> list = new ArrayList<>();
list.add("s1");
list.add("s2");
list.add("s3");
System.out.println(list);
Comparator<String> comp = Collections.reverseOrder();
Collections.sort(list,comp);
System.out.println(list);
执行结果:(同上)
案例6-3:
List<String> list = new ArrayList<>();
list.add("s1");
list.add("s2");
list.add("s3");
list.add("s4");
System.out.println(list);
Comparator<String> comp = Collections.reverseOrder();
Collections.sort(list,comp);
System.out.println(list);
Comparator<String> comp2 = Collections.reverseOrder(comp);
Collections.sort(list,comp2);
System.out.println(list);
执行结果:
[s1, s2, s3, s4]
[s4, s3, s2, s1]
[s1, s2, s3, s4]
假设把Comparator<String> comp2 = Collections.reverseOrder(comp);改成Comparator<String> comp2 = Collections.reverseOrder(null);执行结果:
[s1, s2, s3, s4]
[s4, s3, s2, s1]
[s4, s3, s2, s1]
确保所封装的集合线程安全(强同步)
确保所封装的集合不能改动。
extends V> m)
Collections工具类的功能不止上面这些,还有诸如fill(), rotate(), max(), min()等方法。不可能一下子就能所有记住,使用的时候多查查API就可以。
參考资料:
1. 《Comparable与Comparator浅析》
标签:二分法 arraylist 不能 二分 line post tail details class
原文地址:http://www.cnblogs.com/tlnshuju/p/7258603.html