Java集合框架

简介: Java集合框架

一、集合框架

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

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

目录
相关文章
|
21天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
1天前
|
存储 算法 安全
深入理解Java中的集合框架
【9月更文挑战第34天】本文将带你走进Java的集合框架,探索其背后的设计哲学和实现细节。我们将从集合的基本概念出发,逐步深入到具体的接口和类的实现,最后通过一个实际的例子来展示如何在Java程序中高效地使用集合。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和深度理解。
9 1
|
12天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
557 7
|
10天前
|
算法 Java
Java项目不使用框架如何实现限流?
Java项目不使用框架如何实现限流?
20 2
|
11天前
|
存储 安全 Java
Java 常用集合分类
Java 常用集合分类
13 2
|
16天前
|
Kubernetes Java Android开发
用 Quarkus 框架优化 Java 微服务架构的设计与实现
Quarkus 是专为 GraalVM 和 OpenJDK HotSpot 设计的 Kubernetes Native Java 框架,提供快速启动、低内存占用及高效开发体验,显著优化了 Java 在微服务架构中的表现。它采用提前编译和懒加载技术实现毫秒级启动,通过优化类加载机制降低内存消耗,并支持多种技术和框架集成,如 Kubernetes、Docker 及 Eclipse MicroProfile,助力开发者轻松构建强大微服务应用。例如,在电商场景中,可利用 Quarkus 快速搭建商品管理和订单管理等微服务,提升系统响应速度与稳定性。
31 5
|
16天前
|
机器学习/深度学习 数据采集 JavaScript
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
ADR药品不良反应监测系统是一款智能化工具,用于监测和分析药品不良反应。该系统通过收集和分析病历、处方及实验室数据,快速识别潜在不良反应,提升用药安全性。系统采用Java开发,基于SpringBoot框架,前端使用Vue,具备数据采集、清洗、分析等功能模块,并能生成监测报告辅助医务人员决策。通过集成多种数据源并运用机器学习算法,系统可自动预警药品不良反应,有效减少药害事故,保障公众健康。
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
|
2月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
32 5
|
1月前
|
Java 数据库连接 Apache
Java进阶-主流框架总结与详解
这些仅仅是 Java 众多框架中的一部分。每个框架都有其特定的用途和优势,了解并熟练运用这些框架,对于每一位 Java 开发者来说都至关重要。同时,选择合适框架的关键在于理解框架的设计哲学、核心功能及其在项目中的应用场景。随着技术的不断进步,这些框架也在不断更新和迭代以适应新的开发者需求。
39 1
|
2月前
|
存储 Java 程序员
Java中的集合框架:从入门到精通
【8月更文挑战第30天】在Java的世界里,集合框架是一块基石,它不仅承载着数据的存储和操作,还体现了面向对象编程的精髓。本篇文章将带你遨游Java集合框架的海洋,从基础概念到高级应用,一步步揭示它的奥秘。你将学会如何选择合适的集合类型,掌握集合的遍历技巧,以及理解集合框架背后的设计哲学。让我们一起探索这个强大工具,解锁数据结构的新视角。
下一篇
无影云桌面