package com.collection.map;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.junit.Test;
/*
集合的工具类:Collections
问题:Collection 与 Collections 的区别:
Collection是单列集合的根接口;Collections是操作集合对象的一个工具类;
Collections常用方法:
1,对list集合进行排序。
sort(list):对list集合进行排序;list集合中的元素必须具有自然顺序的特性;
sort(list, comparator);如果list集合中的元素不具备自然顺序的特性,那么必须要自定义一个比较器,
定义元素的比较规则,才能对元素进行排序;
2,对list集合进行二分查找:根据键值查找指定元素的索引值;(前提该集合一定要有序)
int binarySearch(list, key);
int binarySearch(list, key, Comparator);
3,获取集合中的最大值或者最小值。
max(Collection)
max(Collection, comparator)
min(Collection)
min(Collection, comparator)
4,对list集合进行反转。只是将集合中的元素位置进行反转,所以不需要比较器;
reverse(list);
5,可以将不同步的集合变成同步的集合。
Set synchronizedSet(Set<T> s)
Map synchronizedMap(Map<K,V> m)
List synchronizedList(List<T> list)
*/
class Employee{
String name;
int salary;
public Employee(String name, int salary) {
super();
this.name = name;
this.salary = salary;
}
@Override
public String toString() {
return "{name=" + name + ", salary=" + salary + "}";
}
}
// 自定义比较器,定义比较规则
class ListComparator implements Comparator<Employee>{
@Override
public int compare(Employee o1, Employee o2) {
return o1.salary - o2.salary;
}
}
public class Demo4 {
@Test
public void test1(){
List<String> list = new ArrayList<String>();
list.add("www");
list.add("mmm");
list.add("qqq");
System.out.println("集合中的元素:" + list); // 默认排序:[www, mmm, qqq]
// 对list集合进行排序;
Collections.sort(list);
System.out.println("排序后的元素:" + list); // 手动排序:[mmm, qqq, www]
// 因为排序之后,"mmm"是第一个元素,所以查出的索引值为 0;
System.out.println("查找指定元素的索引值:" + Collections.binarySearch(list, "mmm"));
// 获取集合中最大的元素和最小的元素:
System.out.println("集合中最大的元素:" + Collections.max(list));
System.out.println("集合中最小的元素:" + Collections.min(list));
// 对集合中的元素进行反转;
Collections.reverse(list);
System.out.println("反转之后的元素:" + list);
System.out.println("------------");
List<Employee> list2 = new ArrayList<Employee>();
list2.add(new Employee("张三", 800));
list2.add(new Employee("李四", 900));
list2.add(new Employee("王五", 600));
System.out.println("集合中的元素:" + list2);
// 创建自定义比较器对象:
ListComparator comparator = new ListComparator();
// 对list集合进行排序;如果list集合中的元素不具备自然顺序的特性,那么必须自定义一个比较器,定义比较规则;
Collections.sort(list2, comparator);
System.out.println("排序后的元素:" + list2);
// 根据键值查找指定元素的索引值;排序之后,"张三"元素位于第二位,所以索引位 1;
int index = Collections.binarySearch(list2, new Employee("张三", 800), comparator);
System.out.println("查询指定元素的索引:" + index);
// 获取集合中最大的元素和最小的元素:
System.out.println("集合中最大的元素:" + Collections.max(list2, comparator));
System.out.println("集合中最小的元素:" + Collections.min(list2, comparator));
}
@Test
public void test2(){
List<String> list = new ArrayList<String>();
// 将List集合变成线程安全的集合;但是会降低操作效率;
List<String> list2 = Collections.synchronizedList(list);
}
}
Java学习笔记之集合(十):集合工具类Collections的用法
最新推荐文章于 2024-07-27 14:38:21 发布