Java集合-Collections与Arrays

  1. Collections与Arrays

集合框架中的工具类:特点:该工具类中的方法都是静态的。

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Collections:常见方法: 1. 对list进行二分查找: 前提该集合一定要有序。 int binarySearch(list,key); //必须根据元素自然顺序对列表进行升级排序 //要求list 集合中的元素都是Comparable 的子类。 int binarySearch(list,key,Comparator); 2,对list集合进行排序。 sort(list); //对list进行排序,其实使用的事list容器中的对象的compareTo方法 sort(list,comaprator); //按照指定比较器进行排序 3,对集合取最大值或者最小值。 max(Collection) max(Collection,comparator) min(Collection) min(Collection,comparator) 4,对list集合进行反转。 reverse(list); 5,对比较方式进行强行逆转。 Comparator reverseOrder(); Comparator reverseOrder(Comparator); 6,对list集合中的元素进行位置的置换。 swap(list,x,y); 7,对list集合进行元素的替换。如果被替换的元素不存在,那么原集合不变。 replaceAll(list,old,new); 8,可以将不同步的集合变成同步的集合。 Set synchronizedSet(Set<T> s) Map synchronizedMap(Map<K,V> m) List synchronizedList(List<T> list) 9. 如果想要将集合变数组: 可以使用Collection 中的toArray 方法。注意:是Collection不是Collections工具类 传入指定的类型数组即可,该数组的长度最好为集合的size。 |

Arrays:用于对数组操作的工具类

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1,二分查找,数组需要有序 binarySearch(int\[\]) binarySearch(double\[\]) 2,数组排序 sort(int\[\]) sort(char\[\])...... 1. 将数组变成字符串。 toString(int\[\]) 1. 复制数组。 copyOf(); 2. 复制部分数组。 copyOfRange(): 1. 比较两个数组是否相同。 equals(int\[\],int\[\]); 1. 将数组变成集合。 List asList(T\[\]); 这样可以通过集合的操作来操作数组中元素, 但是不可以使用增删方法,add,remove。因为数组长度是固定的,会出现 UnsupportOperationExcetion。 可以使用的方法:contains,indexOf。。。 如果数组中存入的基本数据类型,那么asList会将数组实体作为集合中的元素。 如果数组中的存入的引用数据类型,那么asList会将数组中的元素作为集合中 的元素。 |

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import java.util.ArrayList; import java.util.Collections; import java.util.Arrays; import java.util.List; class Demo1 { public static void main(String\[\] args){ ArrayList<Integer> list = new ArrayList<Integer>(); list.add(4); list.add(3); list.add(1); list.add(2); list.add(3); // 排序 Collections.sort(list); // 折半查找的前提是排序好的元素 System.out .println( Collections.binarySearch( list , 8 ) ); // 找不到返回-插入点-1 // 反序集合输出 Collections.reverse( list ); System.out .println( list ); // 求最值 System.out .println( Collections.max( list ) ); // 4 // fill() 使用指定的元素替换指定集合中的所有元素 // Collections.fill( list, 5 ); System.out .println( list ); // 将数组转换为集合 Integer is\[\] = new Integer\[\]{6,7,8}; List<Integer> list2 = Arrays.asList(is); list.addAll( list2 ); System.out .println( list ); // 将List转换为数组 Object \[\] ins = list.toArray(); System.out .println( Arrays.toString( ins ) ); } } |

集合的练习

问题: 定义一个Person数组,将Person数组中的重复对象剔除?

思路:

  1. 描述一个Person类

  2. 将数组转换为Arrays.asList() List

  3. Set addAll( list )

  4. hashCode()且equals()

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| import java.util.Arrays; import java.util.Set; import java.util.List; import java.util.HashSet; // 1. 描述Person类 class Person { public String name; public int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String toString() { return getClass().getName() + " : name=" + this.name + " age=" + this.age; } // 4. 重写hashCode和equals() public int hashCode() { return this.age; } public boolean equals(Object o) { Person p = null; if (o instanceof Person) p = (Person) o; return this.name.equals(p.name) && (this.age == p.age); } } class Demo2 { public static void main(String\[\] args) { Person\[\] ps = new Person\[\] { new Person("jack", 34), new Person("lucy", 20), new Person("lili", 10), new Person("jack", 34) }; // 遍历数组 System.out.println(Arrays.toString(ps)); // 2. 将自定义对象数组转换为List集合 List<Person> list = Arrays.asList(ps); // 3. 将List转换为Set Set<Person> set = new HashSet<Person>(); set.addAll(list); System.out.println(set); } } |

相关推荐
WBluuue1 分钟前
数据结构与算法:树上启发式合并
数据结构·c++·算法·启发式算法
雪的季节4 分钟前
1 个网络线程 + 3 个数据处理线程(完全隔离)
开发语言
weixin_408099675 分钟前
2026 AI生成图片快速去水印的5种实测方法(附在线工具 + Python/Java/PHP API代码)
java·人工智能·python·api接口·ai去水印·石榴智能·自动去水印
风筝在晴天搁浅5 分钟前
快手 CodeTop LeetCode 227.基本计算器Ⅱ
java·开发语言
JAVA面经实录9178 分钟前
RabbitMQ全套学习知识手册
java·rabbitmq
0xDevNull11 分钟前
Java实战面试题(一)
java·开发语言
好家伙VCC11 分钟前
动态因子图谱+滚动SHAP重构量化模型可解释性
java·人工智能·重构
椰椰椰耶14 分钟前
[SpringCloud][11] Nacos 负载均衡,服务下线、权重配置、同集群优先访问
java·spring cloud·负载均衡
Miss roro14 分钟前
通用OA能不能替代专业法务系统?钉钉飞书和律杏法务云的实测对比
java·钉钉·飞书·法律科技·企业诉讼管理·法务管理系统
不是光头 强16 分钟前
feign-list-param-crash-cpp
java·数据结构·list