java.util.Collections 集合帮助类

演示样例程序(JUnit演示)

排序

    @Test
public void testSort() {
List<Integer> demoList = new ArrayList<Integer>(Arrays.asList(3, 2, 1));
assertEquals(3, demoList.get(0).intValue()); //public static <T extends Comparable<? super T>> void sort(List<T> list)
Collections.sort(demoList); assertEquals(1, demoList.get(0).intValue()); //public static void shuffle(List<? > list) // 随机排序
//public static void reverse(List<? > list) // 反序
}

查找

    @Test
public void testBinarySearch() {
List<Integer> demoList = new ArrayList<Integer>(Arrays.asList(3, 2, 1));
//必须先排序
Collections.sort(demoList);
assertEquals(1, demoList.get(0).intValue()); //二分查找位置
//public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
assertEquals(0, Collections.binarySearch(demoList, 1)); //public static int indexOfSubList(List<? > source, List<?> target)
// public static int lastIndexOfSubList(List<?> source, List<?> target)
}

置换

    @Test
public void testSwap() {
List<Integer> demoList = new ArrayList<Integer>(Arrays.asList(3, 2, 1)); //public static void swap(List<? > list, int i, int j)
Collections.swap(demoList, 0, 2);
assertEquals(1, demoList.get(0).intValue());
//public static void rotate(List<?> list, int distance) //指定距离轮换
//public static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) //指定替换
}

拷贝

    @Test
public void testCopy() {
List<Integer> demoList = new ArrayList<Integer>(Arrays.asList(3, 2, 1)); //public static <T> void copy(List<? super T> dest, List<? extends T> src)
//注意目的List的size最少要等于src的size
List<Integer> copyList = new ArrayList<Integer>(Arrays.asList(1, 2, 3));
Collections.copy(copyList, demoList);
assertEquals(3, copyList.size());
assertEquals(3, copyList.get(0).intValue()); copyList.add(4);
assertEquals(3, demoList.size());
}

比較

    @Test
public void testCompary() {
List<Integer> demoList = new ArrayList<Integer>(Arrays.asList(3, 2, 1));
assertEquals(1, Collections.min(demoList).intValue());
assertEquals(3, Collections.max(demoList).intValue()); List<Integer> compareList = new ArrayList<Integer>(Arrays.asList(5, 6, 7));
//Returns true if the two specified collections have no elements in common
assertTrue(Collections.disjoint(demoList, compareList));
}

创造不同的集合

    @SuppressWarnings("unused")
@Test
public void testCreate() {
List<Integer> demoList = new ArrayList<Integer>(Arrays.asList(3, 2, 1)); //空对象 size=0 无加入方法
List<Integer> emptyList = Collections.emptyList(); //返回一个仅仅包括指定对象的不可变列表。
List<Integer> singletonList = Collections.singletonList(1); //返回指定列表的一个动态类型安全视图。
List<Integer> checkedList = Collections.checkedList(demoList, Integer.class); //返回指定列表的不可改动视图。
List<Integer> unmodifiableList = Collections.unmodifiableList(demoList); //返回指定列表支持的同步(线程安全的)列表。
List<Integer> synchronizedList = Collections.synchronizedList(demoList); synchronized (synchronizedList) {
Iterator<Integer> i = synchronizedList.iterator(); // Must be in synchronized block
while (i.hasNext())
i.next();
} //map set sortedMap sortedSet
}

环境 jdk1.6 window7 junit4

要点Java20 java.util.Collections的更多相关文章

  1. java.util.Collections.copy():列表List浅拷贝

    今天同事问我怎样将一个列表(list1)拷贝到另一个列表(list2),然后修改新的列表(list2)不会影响到旧的列表(list1),想了一想,这是深拷贝啊. 可是,除了循环new还有别的办法吗,想 ...

  2. 集合-强大的集合工具类:java.util.Collections中未包含的集合工具

    任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.Guava沿着这些路线提供了更多的工具方法:适用于所有集合的静态方法.这是Guava最流行和成熟 ...

  3. java.util.Collections.synchronizedSet()方法的使用

    下面的例子显示java.util.Collections.synchronizedSet()方法的使用 package com.; import java.util.*; public class C ...

  4. java.util.Collections.unmodifiableMap 示例

    1. 概述 public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m) ...

  5. 类 java.util.Collections 提供了对Set、List、Map进行排序、填充、查找元素的辅助方法。

      类 java.util.Collections 提供了对Set.List.Map进行排序.填充.查找元素的辅助方法. 1. void sort(List) //对List容器内的元素排序,排序的规 ...

  6. 005-guava 集合-集合工具类-java.util.Collections中未包含的集合工具[Maps,Lists,Sets],Iterables、Multisets、Multimaps、Tables

    一.概述 工具类与特定集合接口的对应关系归纳如下: 集合接口 属于JDK还是Guava 对应的Guava工具类 Collection JDK Collections2:不要和java.util.Col ...

  7. [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具

    原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...

  8. [Google Guava] 强大的集合工具类:java.util.Collections中未包含的集合工具

    转载的,有问题请联系我 原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collecti ...

  9. import java.util.Collections类

    Collections类提供了一些操作集合的方法  下面介绍几个方法 1.将集合变为线程安全的 三个方法分别对应了ArrayList,HashMap,HashSet: Collections.sync ...

随机推荐

  1. (9) go 时间日期

    1. var t = time.Now() println(t.String())//2019-04-26 13:38:02.5100554 +0800 CST m=+0.000000001 2. 月 ...

  2. 洛谷P1345 [USACO5.4]奶牛的电信 [最小割]

    题目传送门 奶牛的电信 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,..., ...

  3. 使用 Eigen 3.3.3 进行矩阵运算

    Eigen是一个能够进行线性代数运算的C++开源软件包,包含矩阵和矢量操作,Matlab中对矩阵的大多数操作都可以在Eigen中找到. 最近需要计算厄米特矩阵的逆,基于LLT分解和LDLT分解,自己写 ...

  4. 后台开发常用mysql语句_v1.0

    目录 一.基本信息查看 1. 表描述 二.表操作 1. 查看建表语句 2.查看表 3. 创建表 4. 更新表 5. 删除表 6. 重命名表 三.索引操作 1. 查看索引 2. 创建索引 3. 修改索引 ...

  5. HDU 5952 [DFS]

    题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=5952] 题意:给出一张无向图,然后判断这张图中一共有多少个不同的大小为S的完全图,并且保证每个点的度 ...

  6. 【BZOJ 2006】2006: [NOI2010]超级钢琴(RMQ+优先队列)

    2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2792  Solved: 1388 Description 小 ...

  7. POJ 3764 The xor-longest Path trie树解决位运算贪心

    http://poj.org/problem?id=3764 题意 :  一颗树,每个边有个值,在树上找一条简单路径,使得这条路径上的边权异或值最大 先找到所有节点到一点的距离 , 显然dis( x ...

  8. 51nod 1225 余数之和 数论

    1225 余数之和 题目连接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1225 Description F(n) ...

  9. Codeforces Round #245 (Div. 2) C. Xor-tree DFS

    C. Xor-tree Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/430/problem/C ...

  10. 装饰者模式:轻松记住IO类的关系与API

    开门见山 目录 概述与模型 1.概述 含义:动态地将责任附加到对象上.若要拓展功能,装饰者提供了比继承更有弹性的替代方案. 初衷:需要动态为某一个类拓展.通常我们会使用继承,但是继承的话,会产生很多子 ...