conanan's blog conanan's blog
首页
关于
  • 分类
  • 标签
  • 归档
  • Java
  • Java Web
  • 工具

    • Maven
  • MySQL
  • Redis
  • Git
  • Vim
  • Nginx
  • Docker
GitHub

Evan Xu

前端界的小学生
首页
关于
  • 分类
  • 标签
  • 归档
  • Java
  • Java Web
  • 工具

    • Maven
  • MySQL
  • Redis
  • Git
  • Vim
  • Nginx
  • Docker
GitHub
  • 基础

  • API

  • Container

    • 6 Container-1 数据结构
    • 6 Container-2 Collection
    • 6 Container-3 List
    • 6 Container-4 Set
    • 6 Container-5 Queue
    • 6 Container-6 Map
    • 6 Container-7 Collections
    • 6 Container-9 新API
    • 2 Object Orientation-5 范型
    • 6 Container-习题
  • 多线程

  • 16 9,10,11新特性
  • 17 Test
  • 18 设计原则&设计模式
  • JDBC
  • Java
  • Container
conanan
2020-12-14

6 Container-7 Collections

# Collections(java.util)

  • 针对Collection/Map进行操作的工具类

  • 常见静态方法

    • static <T> boolean addAll(Collection<T> c, T... elements)添加一些元素

    • static void reverse(List<?> list) :反转

    • static void swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进行交换

    • static void shuffle(List<?> list) 打乱集合顺序,洗牌

    • static <T> void sort(List<T> list) 元素默认自然排序,T 需实现 Comparable 接口

    • static <T> void sort(List<T> list,Comparator<? super T>)元素按照指定规则排序

      //可以根据多条规则排序
      public int compare(Student o1, Student o2) {
      int result = o1.getAge() - o2.getAge();
          result = result == 0 ? o1.getName().charAt(0) - o2.getName().charAt(0) : result;
          return result;
      }
      
      1
      2
      3
      4
      5
      6
      //lambda改写
      Collections.sort(list, (o1, o2) -> {
      int result = o1.getAge() - o2.getAge();
          result = result == 0 ? o1.getName().compareTo(o2.getName()) : result;
          return result;
      });
      
      1
      2
      3
      4
      5
      6
    • static <T> int binarySearch(List<?> list,T key)

    • static <T> T max/min (Collection<?> coll [,Comparator c])

    • static int frequency(Collection<?> c, Object o):返回指定集合中指定元素的出现次数

    • static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)

    • static <T> void copy(List<? super T> dest, List<? extends T> src)

      ArrayList<Integer> list = new ArrayList<>();
      list.add(111);
      list.add(333);
      list.add(444);
      
      ArrayList<Integer> dest = new ArrayList<>(list.size());
      Collections.copy(dest,list);// IndexOutOfBoundsException: Source does not fit in dest
      
      // 改如下
      List<Object> dest = Arrays.asList(new Object[list.size()]);
      Collections.copy(dest,list);
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
    • unmodifiableCollection/List/[Navigable]Set/[Navigable]Map/SortedSet/SortedMap

      返回不可修改的 Container 对象,若修改则抛UnsupportedOperationException

  • 同步控制方法,将指定集 合包装成线程同步的集合,从而可以解决多线程并发访问集合时的线程安全问题

    Collection.synchronizedCollection/List/Set/Map/SortedSet/SortedMap

    List<String> list = Collections.synchronizedList(new ArrayList<>());
    
    1

#

编辑
上次更新: 2021/06/21, 15:45:42
6 Container-6 Map
6 Container-9 新API

← 6 Container-6 Map 6 Container-9 新API→

最近更新
01
线程生命周期
07-06
02
线程安全理论
06-24
03
并发简史
06-24
更多文章>
Theme by Vdoing | Copyright © 2019-2021 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×