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);
    }
}

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

目录
相关文章
|
3月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
261 100
|
3月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
297 101
|
2月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
3月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
1590 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
3月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
2月前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
2月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
142 8
|
2月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
100 7
|
4月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
281 23
|
3月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。