Collections工具类:操作集合的工具类

Collections工具类:操作集合的工具类

Java提供了一个操作Set List Map等集合的工具类:Collections,该工具类提供了大量方法对集合元素进行排序、查询和修改等操作。还提供了将集合对象设置为不可变,对集合对象实现同步控制等方法。

排序操作

    ArrayList arrayList = new ArrayList();
    arrayList.add(2);
    arrayList.add(-1);
    arrayList.add(4);
    arrayList.add(6);
    System.out.println(arrayList); // [2, -1, 4, 6]
    Collections.sort(arrayList); //按自然顺序排序
    System.out.println(arrayList); //[-1, 2, 4, 6]
    Collections.reverse(arrayList); //按倒序排序
    System.out.println(arrayList); //[6, 4, 2, -1]
    Collections.swap(arrayList,0,1);//将0号索引与1号索引的元素换一下
    System.out.println(arrayList);  //[4, 6, 2, -1]
    Collections.shuffle(arrayList); //随机排序
    System.out.println(arrayList);

查找、替换操作

    ArrayList arrayList = new ArrayList();
    arrayList.add(2);
    arrayList.add(-1);
    arrayList.add(4);
    arrayList.add(6);
    System.out.println(arrayList);
    System.out.println(Collections.max(arrayList)); //按照自然排序,输出最大元素
    System.out.println(Collections.min(arrayList)); //按照自然排序,输出最小元素
    Collections.replaceAll(arrayList,4,-1);//把所有的4换成-1
    System.out.println(arrayList);
    System.out.println(Collections.frequency(arrayList,-1)); //输出-1在arrayList中出现的次数

    Collections.sort(arrayList); //只有排序后的List集合才能用二分法查询
    System.out.println(Collections.binarySearch(arrayList,6)); //二分法查询6的索引

同步控制

Collections中提供了多个synchronizedXxx()方法,该方法可以将指定集合包装成线程同步的集合,从而解决多线程并发访问集合时的线程安全问题。

Java中常用的集合框架中的实现类:HashSet TreeSet ArrayList ArrayDeque LinkedList HashMap 和 TreeMap 都是线程不安全的。如果有多个线程访问它们,而且有超过一个的线程试图修改它们,则存在线程安全的问题。

    Collection collection = Collections.synchronizedCollection(new ArrayList());
    List list = Collections.synchronizedList(new ArrayList());
    Set set = Collections.synchronizedSet(new HashSet());
    Map map = Collections.synchronizedMap(new HashMap());

设置不可变集合

    //创建一个空的、不可改变的List对象
    List unmodifiableList = Collections.emptyList();
    //创建一个只有一个元素,且不可改变的Set对象
    Set unmodifiableSet = Collections.singleton("only");
    //创建一个普通的Map对象
    Map map = new HashMap();
    map.put("saber", "阿尔托莉雅");
    map.put("archer", "emiya");
    //返回map集合的不可变版本,只读版本
    Map unmodifiableMap = Collections.unmodifiableMap(map);
    System.out.println(unmodifiableMap);

古老的接口Enumeration接口用来遍历古老的集合Vector Hashtable

    Vector vector = new Vector();
    vector.add(1);
    vector.add(2);
    vector.add(3);
    Hashtable hashtable = new Hashtable();
    hashtable.put("a",1);
    hashtable.put("b",2);
    hashtable.put("c",3);
    Enumeration enumeration = vector.elements();
    while (enumeration.hasMoreElements()){
        System.out.println(enumeration.nextElement());
    }

    Enumeration keyEm = hashtable.keys();
    while (keyEm.hasMoreElements()){
        Object key = keyEm.nextElement();
        System.out.println(key + "-->" + hashtable.get(key));
    }

原文地址:https://www.cnblogs.com/woshi123/p/12509858.html

时间: 2024-11-06 04:50:05

Collections工具类:操作集合的工具类的相关文章

跟王老师学集合(十):操作集合的工具类:Collections

操作集合的工具类:Collections 主讲人:王少华  QQ群号:483773664 Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了将集合元素实现同步控制等方法. 一.排序操作 (一).方法 Collections提供了如下几个方法用于对List集合元素进行排序 static void reverse(List list):反转指定List集合中元素的顺序 static void shu

7.8 操作集合的工具类:Collections

目录 一.排序操作 二.查找和替换功能 三.同步控制 四.设置不可变集合 五.Java 9新增的不可变集合 一.排序操作 Collections提供了如下常用类方法用于对List集合进行排序: ★void reverse(List list):反转指定的List集合中的元素顺序. ★void shuffle(List list):对Lsit集合中的元素进行随机排序(shuffle方法模仿了"洗牌"动作). ★void sort(List list):根据元素的自然顺序对指定集合元素按升

操作集合的工具类:Collections

数组有工具类 Arrays,集合同样有可操作 Collection 和 Map 的工具类:Collections // Collections 工具类可操作的对象:Collection 和 Map public class TestCollections { public static void main(String[] args) { List list = new ArrayList(); list.add("s"); list.add("b"); list.

操作集合的工具类 Collections

这个工具类里提供了大量方法对元素进行排序,查询和修改. 可以将集合设置为不可变,对集合对象实现同步控制. 同步控制 将制定集合包装成线程同步的集合.解决多线程并发访问集合时的线程安全问题.用synchronizedXxxx方法. 设置不可变集合. emptyXxx返回一个空的,不可变的集合 singletonXxx返回一个只包含指定对象不可变的集合对象. unmodifiableXxx,返回指定集合对象的不可变视图. 都是返回指定集合的只读版本 java9中增加了of方法,可以直接创建一个包含o

集合框架工具类Collections

* Collections演示. * 1,用于操作集合的工具类. * 2,提供了很多的静态方法. * * 比如对list集合排序,二分查找,位置置换. * 对排序的元素进行顺序的逆转.reverseOrder * 还可以获取集合的最大值和最小值. * 最牛叉的是将非同步的集合转成同步的集合 synchronizedXXX package cn.itcast.p4.collections;   import java.util.ArrayList; import java.util.Collect

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

Arrays是专门用于操作数组的工具类

排序或者查找数组里面的内容 多值传递 集合转数组 数组转集合 数组转字符串 /* Arrays 是用于操作数组的工具类,里面全是静态的,和Collections是用来操作集合的工具类是不一样的 当import导入的没有说明static,那么就说明是导入包中的所有类, 如果说明是static的时候就说明导入的是某个类的所有静态成员,记得要加上static的说明符号. import static java.lang.System.*; */ import java.util.*; public cl

Java8 时间日期类操作

Java8 时间日期类操作 Java8的时间类有两个重要的特性 线程安全 不可变类,返回的都是新的对象 显然,该特性解决了原来java.util.Date类与SimpleDateFormat线程不安全的问题.同时Java8的时间类提供了诸多内置方法,方便了对时间进行相应的操作. 上图为Java8时间类的覆盖范围 相关的类有 LocalDate LocalTime LocalDateTime ZoneId ZonedDateTime Instant Instant类 Instant类用来表示格林威

IntelliJ IDEA 接口类跳转到实现类及实现类跳转到接口

接口和实现类的互相跳转是使用IntelliJ IDEA过程中常用的操作,在此记录一下: 1.Service接口跳转到实现类 操作:在接口类的方法上使用快捷键Ctrl+Alt+B,或者点击下图所示位置 2.Service实现类跳转到接口类方法 操作:在实现类的方法上使用快捷键Ctrl+U,或点击下图所示位置 3.Dao接口跳转到实现类(mapper.xml文件) 需借助插件Free Mybatis plugins,请到Setting->Plugins搜索安装. 操作:在接口上使用快捷键Ctrl+A