一、集合框架
集合框架是Java提供的一套用于存储和处理对象的标准化框架,用于代替旧的容器类。它提供了一组接口(如Collection、Set、List、Map等)和类(如ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等),可以用来在程序中存储对象、遍历数据、查找数据、删除数据等
二、Collection接口
2.1概述
Collection接口是Java集合框架中的一个顶层接口,它表示一组对象(元素)的集合,提供对这些元素进行基本操作的方法。该接口定义了用于操作集合的共性方法,包括添加、删除、迭代、查找等常见操作。任何实现了Collection接口的类都可以作为集合框架中的一员来进行统一处理。
2.2常用方法
- boolean add(E e):向集合中添加一个新的元素。 boolean remove(Object o):从集合中移除指定的元素。
- boolean isEmpty():判断集合是否为空。
- int size():返回集合中元素的数量。
- terator iterator():返回一个用于迭代访问集合中元素的迭代器,可以使用while循环逐一访问集合中的所有元素。
- void clear():清空集合中所有元素。
- boolean contains(Object o):判断集合中是否包含指定的元素。
2.3List和Set
- List:以有序的方式存储一组元素,并可以通过下标(索引)访问和修改其中的元素。代表性的实现类有ArrayList和LinkedList。详解在这里List集合
- Set:存储一组唯一的元素,不允许出现重复值。代表性的实现类有HashSet和TreeSet。详解在这里Set集合
三、Map集合
Map是Java集合框架中的一种集合类型,它用于存储一组由键(key)和值(value)组成的映射关系。Java中的Map接口定义了一系列的方法,用于操作这些映射关系。在Map中,每个键对应一个值,可以通过键快速查找到对应的值。代表性的实现类有HashSet和TreeSet。详解在这里Map集合
四、集合工具类
Java中提供了一些集合工具类,可以用来操作和处理集合,这些工具类通常包含一些静态方法,如排序、搜索、过滤、转换、合并等操作。
4.1Collections
Java中的java.util.Collections工具类是集合框架类库中提供的一个常用工具类,封装了许多常用的集合操作方法,可以方便的对各种集合进行操作。一般常见的使用方法包括集合的排序、查找、修改、替换、拷贝、删除重复等等。
常用的Collections方法如下:
- sort(List list)方法:对List集合进行升序排序。
- reverse(List<?> list)方法:对List集合进行倒序排序。
- binarySearch(List<? extends Comparable<? super T>> list, T key)方法:对List集合进行二分查找。
- shuffle(List<?> list)方法:对List集合进行随机排序。
- fill(List<? super T> list, T obj)方法:用指定对象填充List集合。
- copy(List<? super T> dest, List<? extends T> src)方法:将src集合的元素复制到dest集合中。
- replaceAll(List list, T oldVal, T newVal)方法:使用新的元素替换List集合中的指定元素。
- frequency(Collection<?> c, Object o)方法:查找集合中指定元素出现的次数。
- unmodifiableList(List<? extends T> list)方法:将List集合转换为只读集合,不能对其进行修改操作。
4.2Arrays
java.util.Arrays是Java集合框架中的一个工具类,用于操作和处理数组。该类提供了许多常用的静态方法,如排序、查找、拷贝、比较等。
常用的Arrays方法如下:
- sort(int[] a)方法:对指定的int数组进行排序。
- -binarySearch(int[] a, int key)方法:在指定的int数组中查找指定的元素。
- equals(int[] a, int[] b)方法:比较两个int数组是否相等。
- fill(int[] a, int val)方法:将指定的int值分配给指定的int数组的每个元素。
- copyOf(int[] original, int newLength)方法:将原始int数组复制到一个新数组,新数组的长度为指定长度。
- asList(T… a)方法:将数组转换成List集合。
- toString(int[] a)方法:将int数组转换成字符串形式。
4.3Comparator
java.util.Comparator是一个接口,可以通过实现该接口来定义两个对象之间的排序算法,比较器对象实现了排序规则,是实现排序算法的关键。
常用的比较器方法如下:
- compare(T o1, T o2)方法:比较o1和o2的大小关系,如果o1小于o2返回负整数,如果o1等于o2返回0,如果o1大于o2返回正整数。
- reversed()方法:返回该比较器的逆序比较器。
- thenComparing(Comparator<? super T> other)方法:返回一个比较器,先使用该比较器进行比较,如果比较结果相同再用other比较器完成比较。
- nullsFirst()方法和nullsLast()方法:返回一个比较器,用于比较对象属性为null的情况,nullsFirst()表示null值在前面,而nullsLast()表示null值在后面。
4.4stream
Java 8引入了java.util.stream包,用于对集合数据进行流式操作,提供了一种更为简洁、易读、易维护的方式来处理和分析数据。使用Stream API,可以在不修改原始集合的情况下,对集合中的所有元素进行聚合、查询或操作。
常用的Stream方法如下:
- filter(Predicate<? super T> predicate)方法:对流中的元素进行过滤。
- map(Function<? super T, ? extends R> mapper)方法:将流中的元素转换为另一种类型。
- flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)方法:将流中的每个元素转换为另一个流,并将其连接到一个流。
- distinct()方法:去除流中的重复元素。
- sorted()方法:对流中的元素进行排序。
- limit(long maxSize)方法:截取流中的前maxSize个元素。
- skip(long n)方法:跳过流中前n个元素。
- forEach(Consumer<? super T> action)方法:对流中的每个元素执行指定操作。
- collect(Collector<? super T, A, R> collector)方法:将流中的元素收集到指定的容器中。
五、泛型
5.1概述
Java中的泛型是一种可以使代码具有更好的运行时类型安全性的机制。通俗的说,泛型就是把类型的确定交给使用者,在编译时确定,在运行时是不涉及泛型的。
5.2作用
- 提供了编译时类型安全检查机制,可以让编译器在编译代码时就能够发现类型错误和编程错误,从而减少运行时错误的出现
- 提高代码的可读性和可维护性。通过使用泛型可以使代码更加清晰,易于理解和维护。可以使代码更加抽象化,逻辑更加清晰。
- 避免强制类型转换。泛型可以传递类型参数,使得Java编译器可以自动识别数据类型,避免了类型转换导致的潜在错误。
- 代码重用。使用泛型,可以在不同类型中共享通用方法和数据结构,从而减少编写重复代码的工作量。
- 提高代码的健壮性。泛型不仅可以提高代码的可读性和可维护性,还能够减少类型和运行时的错误,从而提高代码的健壮性。
5.3使用
泛型类:在类名后添加尖括号,尖括号内为类型参数,用于声明一个泛型类。
public class MyClass<T> { // 类实现 }
泛型接口:在接口名后添加尖括号,尖括号内为类型参数,用于声明一个泛型接口。
public interface MyInterface<T> { // 接口方法定义 }
泛型方法:在方法名前添加尖括号,尖括号内为类型参数,用于声明一个泛型方法。
public <T> void myMethod(T t) { // 方法实现 }
类型通配符:使用 <?> 符号表示,代表所有类型都可以接受,主要用在泛型方法和泛型类中。
public void consumeAnyThing(List<?> list) { for (Object item : list) { System.out.println(item); } }
好啦,今天的分享就到此为止!希望你看完本篇文章有所收获,祝你变得更强!!!