操作集合的工具类Collections
来源:互联网 发布:中国医药化工网数据库 编辑:程序博客网 时间:2024/05/23 18:52
Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变,对集合对象实现同步控制等方法。
- 排序操作
Collections提供了如下几个方法用于对List集合元素进行排序。
// 当参数为正数时,将list集合的后参数个元素“整体”移动到前面,当参数为负数时,将list集合的前参数个元素“整体”移动到后面Collections.rotate(list, 2);// 反转指定列表中元素的顺序。Collections.reverse(list);// 对List集合元素进行随机排序。Collections.shuffle(list);// 根据元素的自然顺序对指定list集合的元素按升序进行排序Collections.sort(list);// 根据指定Comperator产生的顺序对List集合元素进行排序。Collections.sort(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { if (o1.compareTo(o2) > 0) return -1; return 0; }});// 将指定List集合中的i处元素和j处元素进行交换。Collections.swap(list, 0, 7);// 当参数为正数时,将list集合的后参数个元素“整体”移动到前面,当参数为负数时,将list集合的前参数个元素“整体”移动到后面Collections.rotate(list, 2);
- 查找、替换操作
Collections还提供了如下用于查找、替换集合元素的常用方法。
//使用一个新值"9"替换List对象的所有旧值"5"。Collections.replaceAll(list,"5","9");// 返回指定集合中指定元素的出现次数。Collections.frequency(list,"9");// 根据Comparator指定的顺序,返回给集合中的最小元素。Collections.min(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { if(o1.compareTo(o2) > 0) return -1; return 0; }});// 根据元素的自然顺序,返回给集合中的最小元素。Collections.min(list);// 根据Comparator指定的顺序,返回给集合中的最大的元素。Collections.max(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { if(o1.compareTo(o2) > 0) return -1; return 0; }});// 根据元素的自然顺序,返回给定集合中的最大元素。Collections.max(list);// 使用二分法搜索指定的List集合,用来获得指定对象key在List集合中的索引。list必须有序Collections.binarySearch(list,"3");// 使用指定元素obj替换指定List集合中的所有元素。Collections.fill(list,"9");
- 同步控制
Collections类中提供了多个synchronizedXxx()方法,该方法可以将指定的集合包装成线程同步的集合,从而可以解决多线程并发访问集合时的多线程安全问题。
Java中常用的集合框架中的实现类,HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList、HashMap、和TreeMap都是线程不安全的。如果有多个线程访问它们,而且有超过一个的线程试图修改它们,则可能会出现错误。Collections提供了多个静态方法可以把它们包装成线程同步的集合。
Collection<String> collection = Collections.synchronizedCollection(new ArrayList<String>());List<String> list = Collections.synchronizedList(new ArrayList<String>());Set<String> set = Collections.synchronizedSet(new HashSet<String>());Map<String,String> map = Collections.synchronizedMap(new HashMap<String,String>());
通过synchronizedXxx()方法,就可以直接获取List、Set、Map的线程安全实现版本。
- 设置不可变集合
Collections提供如下三个类方法来返回一个不可变的集合。
1.emptyXxx():返回一个空的,不可变的结合对象,此处的集合即可以是List,也可以是Set,还可以是Map。
2.singletonXxx():返回一个包含指定对象的,不可变的集合对象,此处的集合即可以是List,也可以是Set,还可以是Map。
3.unmodifiableXxx():返回指定集合对象的不可变视图,此处的集合既可以是List,也可以是Set,还可以是Map。
public static void test5(){ //创建一个空的,不可变的Set对象 Set set = Collections.emptySet(); //创建一个只包含特定对象的List集合 List<String> list = Collections.singletonList("abc"); //创建一个普通的Map集合,将Map集合转变为一个不能在更改的Map对象 Map map = new HashMap(); map.put("123", "abc"); map.put("456", "def"); Map unmodifiableMap =Collections.unmodifiableMap(map);}
源代码:
https://github.com/wolf521/demo/tree/master/src/main/java/com/example/demo/collection
阅读全文
0 0
- Collections 操作集合的工具类
- 操作集合的工具类 collections
- 操作集合的工具类:Collections
- 操作集合的工具类:Collections
- Java 操作集合的工具类:Collections
- 操作集合的工具类:Collections
- 操作集合的工具类:collections
- 操作集合的工具类:Collections
- 操作集合的工具类:Collections
- Collections集合操作的工具类
- 操作集合的工具类Collections
- 操作集合的工具类Collections
- 操作集合的工具类Collections
- 1006--Java集合--操作集合的工具类:Collections
- 操作集合的工具类:Collections使用示例
- 类 Collections集合的操作
- Collections(集合操作的工具类)&集合的同步控制&不可变集合的设置
- Collections(集合操作的工具类)&集合的同步控制&不可变集合的设置
- cvs
- WebSocket 和socket、HTTP的区别和联系
- Java 根据Properties读写Properties配置文件
- 汇编-将数据区的字符串逆序输出
- Nginx 反向代理,负载均衡,动静分离配置
- 操作集合的工具类Collections
- 非结构化数据是什么
- 【模块】二维三点定位算法
- adb命令
- Tomcat源码分析-JMX之Registry类(中)
- TCP_server
- angularJs-Tab切换
- 函数组合与集合管道模式 迭代 Java 中集合的函数模式
- [bzoj2150] 部落战争(二分图最小边覆盖)