java 集合Collections 工具类:排序,查找替换。Set、List、Map 的of方法创建不可变集合

时间:2023-01-09 05:31:43

Collections 工具类

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

用法:直接调用Collections.静态方法(<集合对象>)

Collections排序操作

  • void reverse(List list): 反转指定 ist 集合中元素的顺序
  • void shuffie(List list): 对List集合元素进行随机排序 (shuffie方法模拟了"洗牌"动作)
  • void sort(List list): 据元素的自然顺序对指定list集合的元素按升序进行排序。
  • void sort(List list, Comparator c): 根据指定 Comparator 产生的顺序对 List 集合元素进行排序
  • void swap(List list, int i, int j): 将指定 List 集合中的i处元素和j处元素进行交换。
  • void rotate(List list , int distance): distance为正数时,将 list 集合的后 distance 个元素"整体",移到前面:当 distance 为负数时,将 list 集合的前 distance 个元素"整体"移到后面 该方法不会改变集合的长度。
    public static void main(String[] args) {
List list = new ArrayList();
list.add(3);
list.add(1);
list.add(7);
list.add(5);
// list.sort(((o, t1) -> (int)t1 - (int)o));
// System.out.println(list);
Collections.reverse(list);
System.out.println(list);
Collections.sort(list);
System.out.println(list);
}

查找替换操作:

  • int binarySearch(List list, Object key): 使用二分搜索法搜索指定的 List集合,以获得指定对象在List集合中的索引。如果要使该方法可以正常工作,则必须保list中的元素己经处于有序状态。
  • Object max(Collection coll): 根据元素的自然顺序,返回给定集合中的最大元素。
  • Object max(Col1ection coll, Comparator comp): Comparator 定的顺序,返回给定集合中的最大元素
  • Object min(Col1ection coll) 根据元素的自然顺序,返回给定集合中的最小元素
  • Object min(Col1ection coll, Comparator comp): 根据 Comparator 定的顺序,返回给定集合中的最小值
  • void fill(List list, Object obj): 使用指定元素 obj 替换指定 List 集合中的所有元素
  • int frequer(Collection c, Object o): 返回指定集合中指定元素的出现次数
  • int indexOfSubList(List source, List target) 返回子List对象在父 List对象中第一次出现的位置索, 如果父List中没有没有出现这样的子List那么返回-1
  • int lastIndexOfSubList(List source, List target): 返回子List对象在父List对象中最后一次出现位置索引 ;如果List中没有出现这样的子List ,则返回 -1
  • boolean replaceAll(List list, Object oldVal, Object newVal) 使用 个新值newVal替换 List 对象的所有旧值oldVal
        List list = new ArrayList();
list.add(3);
list.add(1);
list.add(7);
list.add(5);
Collections.sort(list);
Collections.replaceAll(list,7,8);
System.out.println(list); //[1, 3, 5, 8]

其他操作

  • void addAll(list,"zz","ff","aa","bb","cc"); 向集合中添加若干元素
  • void synchronizedList(list); 把不是线程安全的集合转换为线程安全的

java9新增的不可变集合:Set、List、Map 的of方法创建

Java9新增了一个of方法来创建不可变集合:
        List list = List.of("Java", "Php", "Python", "Golang", "cpp");
System.out.println(list);
Set set = Set.of("Java", "Php", "Python", "Golang", "cpp");
System.out.println(set);
Map map = Map.of("语文",80,"数学","98","政治","89");
System.out.println(map);
Map map1 = Map.ofEntries(
Map.entry("语文",80),
Map.entry("数学",98)
);
System.out.println(map1);
map1.put("政治",98);//UnsupportedOperationException
 

//1、向集合中添加若干元素
List<String> list = new ArrayList<>();
Collections.addAll(list,"zz","ff","aa","bb","cc");
System.out.println(list);

//3、Collections.synchronizedXXX(xxx)把不是线程安全的集合转换为线程安全的
List<String> synchronizedList = Collections.synchronizedList(list);
System.out.println(synchronizedList);

//1、向集合中添加若干元素
List<String> list = new ArrayList<>();
Collections.addAll(list,"zz","ff","aa","bb","cc");
System.out.println(list);

//2、对List排序,在JDK7之前排序
Collections.sort(list);
System.out.println(list);

//2.1排序可以指定排序方法
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
});
System.out.println(list);
//3、Collections.synchronizedXXX(xxx)把不是线程安全的集合转换为线程安全的
List<String> synchronizedList = Collections.synchronizedList(list);
System.out.println(synchronizedList);