JAVA 并发编程随笔【四】Collections集合工具类(学习并发编程顺带学习)

xiaoxiao2021-02-28  100

一、向已经存在的集合中添加新的元素

 

//向存在的集合中添加元素 List<String> list = new ArrayList<String>(); //一次添加一个元素 Collections.addAll(list, "asd"); System.out.println(list); //一次添加多个元素 Collections.addAll(list, "asd","asd"); System.out.println(list);

打印结果:

 

 

[asd] [asd, asd, asd]

二、二进制搜索算法binarySearch,在指定的list列表中查找指定的对象,list列表中存储的对象必须是升序按照自然排序的;

 

 

User user = new User(4, "花猫"); List<User> users = new ArrayList<User>(); users.add(new User(34, "黑猫")); users.add(new User(1, "白猫")); users.add(new User(23, "梨猫")); users.add(new User(4, "花猫")); users.add(new User(6, "紫猫")); Collections.sort(users);//自然排序 //二进制算法超找 int index = Collections.binarySearch(users, user); System.out.println(index);

输出的结果是:1

 

 

使用比较器来查找,查找的列表必须是按照升序排序的,否则查找的结果是不可预测的

 

 

Dog dog = new Dog(23, "梨狗"); List<Dog> dogs = new ArrayList<Dog>(); dogs.add(new Dog(1, "白狗")); dogs.add(new Dog(4, "花狗")); dogs.add(new Dog(6, "紫狗")); dogs.add(new Dog(23, "梨狗")); dogs.add(new Dog(34, "黑狗")); //二进制算法超找 int index = Collections.binarySearch(dogs, dog, new Comparator<Dog>() { @Override public int compare(Dog dog1, Dog dog2) { return dog1.getAge().compareTo(dog2.getAge()); } }); System.out.println("索引"+index);

 

 

 

 

 

结果是:索引3

转载请注明原文地址: https://www.6miu.com/read-80588.html

最新回复(0)