Java集合框架

本文介绍了Java集合框架的核心概念,包括Collection接口、List和Set的特性,以及Map集合的用途。详细讲解了集合工具类Collections和Arrays的方法,如排序、查找、拷贝等。同时,提到了Comparator接口在自定义排序中的作用和Java8中的StreamAPI。最后,概述了泛型的概念、作用和使用方式,强调其在提高代码安全性和可维护性方面的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今日金句

再小的努力,乘以365都很明显

一、集合框架

集合框架是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);
    }
}

好啦,今天的分享就到此为止!希望你看完本篇文章有所收获,祝你变得更强!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值