04-java.util.Collections+Collections.sort()方法的练习

1、java.util.Collections:集合框架的工具类,里面的方法都是静态方法。此类完全由在collection上进行操作或返回collection的静态方法组成。如果为此类的方法所提供的collection或类对象为null,则这些方法都将抛出NullPointerException

2、方法

(1)static <T> boolean addAll(Collection<? super T> c, T... elements):将所有指定元素添加到指定collection中。可以分别指定要添加的元素,或者将它们指定为一个数组。此便捷方法的行为与c.addAll(Arrays.asList(elements))的行为是相同的,但在大多数实现下,此方法运行起来可能要快得多。在分别指定元素时,此方法提供了将少数元素添加到现有collection中的一个便捷方式:

         Collections.addAll(flavors, "Peaches 'n Plutonium", "Rocky Racoon");

(2)static <T> Queue<T> asLifoQueue(Deque<T> deque):以后进先出(Lifo)Queue的形式返回某个Deque的视图。方法add()被映射到push(),remove()被映射到pop()等等。在希望使用某一方法获取一个Queue并且需要它具有Lifo顺序时,此方法很有用。每次在此方法返回的队列上调用方法都将导致在底层实现队列上调用该方法一次,并伴随一个异常。addAll()方法是作为底层实现队列上的addFirst()调用序列实现的

(3)static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key):使用二分搜索法搜索指定列表,以获得指定对象。在进行此调用之前,必须根据列表元素的自然顺序对列表进行升序排序(通过sort(List)方法)。如果没有对列表进行排序,则结果是不确定的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个

注:没有顺序,不能折半查找

(4)static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c):使用二分搜索法搜索指定列表,以获得指定对象。在进行此调用之前,必须根据指定的比较器对列表进行升序排序(通过sort(List, Comparator)方法)。如果没有对列表进行排序,则结果是不确定的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个

注:没有顺序,不能折半查找

(5)static <E> Collection<E> checkedCollection(Collection<E> c, Class<E> type):返回指定collection的一个动态类型安全视图。试图插入一个错误类型的元素将导致立即抛出ClassCastException。假设在生成动态类型安全视图之前,collection不包含任何类型不正确的元素,并且所有对该collection的后续访问都通过该视图进行,则可以保证该collection不包含类型不正确的元素

注:动态类型安全视图的另一个用途是调试

/**
 * 一般的编程语言机制中都提供了编译时(静态)类型检查,但是一些未经检查的强制转换可能会使此机制无效。
 * 通常这不是一个问题,因为编译器会在所有这类未经检查的操作上发出警告。但有的时候,只进行单独的静态类型检查并不够。
 * 例如,假设将 collection 传递给一个第三方库,则库代码不能通过插入一个错误类型的元素来毁坏 collection。
 *
 *
 * 动态类型安全视图的另一个用途是调试。
 * 假设某个程序运行失败并抛出 ClassCastException,这指示一个类型不正确的元素被放入已参数化 collection 中。
 * 不幸的是,该异常可以发生在插入错误元素之后的任何时间,因此,这通常只能提供很少或无法提供任何关于问题真正来源的信息。
 * 如果问题是可再现的,那么可以暂时修改程序,使用一个动态类型安全视图来包装该 collection,通过这种方式可快速确定问题的来源。例如,以下声明:
 *
 * Collection<String> c = new HashSet<String>();
 *
 * 可以暂时用下面的声明代替:
 *
 * Collection<String> c = Collections.checkedCollection(new HashSet<String>(), String.class);
 *
 * 再次运行程序会造成它在将类型不正确的元素插入 collection 的地方失败,从而清楚地识别问题的来源。
 * 问题得以解决后,可以将修改后的声明转换回原来的声明。
 *
 * 返回的 collection 不会 将 hashCode 和 equals 操作传递给底层实现 collection,但这依赖于 Object 的 equals 和 hashCode 方法。
 * 在底层实现 collection 是一个 set 或一个列表的情况下,有必要遵守这些操作的协定。
 *
 * 如果指定 collection 是可序列化的,则返回的 collection 也将是可序列化的。
 */

(6)static <E> List<E> checkedList(List<E> list, Class<E> type):返回指定列表的一个动态类型安全视图。试图插入一个错误类型的元素将导致立即抛出ClassCastException。假设在生成动态类型安全视图之前,列表不包含任何类型不正确的元素,并且所有对该列表的后续访问都通过该视图进行,则可以保证此列表不包含类型不正确的元素

注:如果指定列表是可序列化的,则返回的列表也将是可序列化的

(7)static <K, V> Map<K, V> checkedMap(Map<K, V> m, Class<K> keyType, Class<V> valueType):返回指定映射的一个动态类型安全视图。试图插入一个具有错误类型键或值的映射关系将导致立即抛出ClassCastException。类似地,试图修改当前与键关联的值(无论是直接通过映射自身,还是通过一个从该映射项集视图中获得的Map.Entry实例)都将导致立即抛出ClassCastException。假设在生成动态类型安全视图之前,映射中不包含任何类型不正确的键或值,并且所有对映射的后续访问都通过该视图(或其collection视图之一)进行,则可以保证该映射不包含类型不正确的键或值

注:如果指定映射是可序列化的,则返回的映射也将是可序列化的

(8)static <E> Set<E> checkedSet(Set<E> s, Class<E> type):返回指定set的一个动态类型安全视图。试图插入一个错误类型的元素将导致立即抛出ClassCastException。假设在生成动态类型安全视图之前,set不包含任何类型不正确的元素,并且所有对该set的后续访问都通过该视图进行,则可以保证该set不包含类型不正确的元素

注:如果指定set是可序列化的,则返回的set也将是可序列化的

(9)static <K, V> SortedMap<K, V> checkedSortedMap(SortedMap<K, V> m, Class<K> keyType, Class<V> valueType):返回指定有序映射的一个动态类型安全视图。试图插入一个具有错误类型键或值的映射关系将导致立即抛出ClassCastException。类似地,试图修改当前与键关联的值(无论是直接通过映射自身,还是通过一个从该映射项集视图中获得的Map.Entry实例)将导致立即抛出ClassCastException。假设在生成动态类型安全视图之前,映射中不包含任何类型不正确的键或值,并且所有对映射的后续访问都通过该视图(或其collection视图之一)进行,则可以保证此映射不包含类型不正确的键或值

注:如果指定映射是可序列化的,则返回的映射也将是可序列化的

(10)static <E> SortedSet<E> checkedSortedSet(SortedSet<E> s, Class<E> type):返回指定有序set的一个动态类型安全视图。试图插入一个错误类型的元素将导致立即抛出ClassCastException。假设在生成动态类型安全视图之前,有序set不包含任何类型不正确的元素,并且所有对该有序set的后续访问都通过该视图进行,则可以保证该有序set不包含类型不正确的元素

注:如果指定的有序set是可序列化的,则返回的有序set也将是可序列化的

(11)static <T> void copy(List<? super T> dest, List<? extends T> src):将所有元素从一个列表复制到另一个列表。执行此操作后,目标列表中每个已复制元素的索引将等同于源列表中该元素的索引。目标列表的长度至少必须等于源列表。如果目标列表更长一些,也不会影响目标列表中的其余元素

(12)static boolean disjoint(Collection<?> c1, Collection<?> c2):如果两个指定collection中没有相同的元素,则返回true

(13)static final <T>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值