Java基础关键_017_集合(一)

news/2025/3/6 2:01:32/

目  录

一、概述

二、Collection 关系结构

1.概览

2.说明

 三、Collection 接口

1.通用方法

(1)add(E e)

(2)size()

(3)addAll(Collection c)

(4)contains(Object o)

(5)remove(Object o)

(6)clear()

(7)isEmpty()

(8)toArray()

2.通用遍历(迭代)※

四、SequencedCollection 接口

1.说明

2. 方法

(1)addFirst(Object o)

(2) addLast(Object o)

(3)removeFirst()

(4)removeLast()

(5)getFirst() 

(6)getLast() 

(7)reversed() 


一、概述

  1. 集合是一种容器,用来组织和管理数据;

  2. 每一个集合类底层的数据结构不同;

  3. 集合中存储的是引用,是将对象的地址存储在集合中;

  4. 默认情况下,若不使用泛型,集合中可存储任何类型的引用,只要是 Object 的子类即可;

  5. Java 集合框架相关类在 java.util 下;

  6. Java 集合框架分为:Collection 结构(元素以单个形式存储)、Map 结构(元素以键值对的映射关系存储)。


二、Collection 关系结构

1.概览


2.说明

  1. jdk 21 新增 SequencedCollection 接口和 SequencedSet 接口;

  2. LinkedList、ArrayList、Vector、Stack、TreeSet、HashSet、LinkedHashSet 是实现类,其余都是接口;

  3. 实现类中,只有 HashSet 是无序集合,其余为有序集合。有序集合是存储的元素有下标或可排序,无序集合是存储的元素无下标且未排序;

  4. LinkedList 是双向链表,不是队列数据结构,但是可以模拟队列;

  5. ArrayList 是数组;

  6. Vector 是线程安全的数组;

  7. HashSet 是哈希表;

  8. LinkedHashSet 是双向链表和哈希表的联合体;

  9. TreeSet 是红黑树;

  10. List 集合存储的元素可以重复,而 Set 集合存储的元素不可重复。


 三、Collection 接口

1.通用方法

(1)add(E e)

        向集合中添加元素。

java">public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());}
}

(2)size()

        获取集合中元素的个数。

java">public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());System.out.println(c.size());   // 5}
}

(3)addAll(Collection c)

        将参数集合中全部元素加入到当前集合。

java">public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());System.out.println(c.size());   // 5Collection c2 = new ArrayList();c2.add(123);c2.add(520.1314);System.out.println(c2.size());  // 2c.addAll(c2);System.out.println(c.size());   // 7}
}

(4)contains(Object o)

        判断集合中是否包含对象 o 。

java">public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());System.out.println(c.contains(520.1314));   // trueSystem.out.println(c.contains(false));  // falseString s = "Hello";System.out.println(c.contains(s));  // true// 因为集合存储的是对象的引用,所以,如果存储的是对象,那么判断的时候,需要使用equals方法进行比较}
}

(5)remove(Object o)

        从集合中删除对象 o 。

java">public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());String s = "Hello";System.out.println(c.size());   // 5c.remove(s);System.out.println(c.size());   // 4// 因为集合保存的是引用,所以删除的是s在集合中的引用,也会调用equals方法}
}

(6)clear()

        清空集合。

java">public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());System.out.println(c.size());   // 5c.clear();System.out.println(c.size());   // 0}
}

(7)isEmpty()

        判断集合中的元素个数是否为 0 。

java">public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());System.out.println(c.isEmpty());    // falseCollection c2 = new ArrayList();System.out.println(c2.isEmpty());   // true}
}

(8)toArray()

        将集合转换成一维数组。

java">public class CollectionTest {public static void main(String[] args) {Collection c = new ArrayList();c.add(123);c.add(520.1314);c.add("Hello");c.add(true);c.add(new Object());Object[] array = c.toArray();for (Object o : array) {System.out.print(o + "\t");}// 123	520.1314	Hello	true	java.lang.Object@682a0b20}
}

2.通用遍历(迭代)※

java">public class CollectionTest {public static void main(String[] args) {/*** 集合的遍历*/Collection collection = new ArrayList();collection.add(1);collection.add(2);collection.add(3);// 1.获取当前集合依赖的迭代器对象Iterator iterator = collection.iterator();System.out.println(iterator);   // 输出迭代器对象// 2.循环,当前指向位置是否存在元素while (iterator.hasNext()) {// 3.将当前指向位置的元素取出,并向下移动一位Object obj = iterator.next();System.out.print(obj + "\t");}// 1	2	3}
}

四、SequencedCollection 接口

1.说明

  1. jdk 21 新增,之前没有的;
  2. 所有有序集合都实现了该接口;
  3. LinkedList、ArrayList、Vector、TreeSet、LinkedHashSet 可以调用该接口的方法。

2. 方法

(1)addFirst(Object o)

        向头部添加一个元素。


(2) addLast(Object o)

         向尾部添加一个元素。


(3)removeFirst()

         删除头部元素。


(4)removeLast()

         删除尾部元素。


(5)getFirst() 

         获取头部节点。


(6)getLast() 

        获取尾部节点。


(7)reversed() 

        反转集合中的元素。


http://www.ppmy.cn/news/1576956.html

相关文章

Github 2025-03-01 开源项目月报 Top19

根据Github Trendings的统计,本月(2025-03-01统计)共有19个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目9TypeScript项目6Jupyter Notebook项目2JavaScript项目2非开发语言项目1Svelte项目1Rust项目1Go项目1C++项目1Ollama: 本地大型语言模…

【mysql】mysql数据库数据导入、导出/备份还原操作

mysql数据库数据导入、导出 win10导入 例如文件名为 :book_management.sql.gz 进入文件所在目录,解压,用360解压工具解压就可以,用7z也行 配置mysql环境变量,在文件所在目录,开启cmd 输入,mysql -h IP地…

陕西省地标-DB61/T 1121-2018 政务服务中心建设和运营规范

揭秘陕西省智慧政务服务中心新标准:打造高效便捷的服务新体验 随着信息化时代的深入发展,智慧政务已成为提升政府服务效率、优化营商环境的重要举措。陕西省作为全国政务改革的先行者,近期颁布了《陕西省地标-DB61_T 1121-2018 政务服务中心…

【力扣】5.最长回文子串

AC截图 题目 思路 初始化DP表: 创建一个大小为 n x n 的二维布尔数组 dp,其中 dp[i][j] 表示字符串 s 从第 i 个字符到第 j 个字符的子串是否为回文。 初始化所有长度为1的子串为回文,即 dp[i][i] true。 处理长度为2的子串: …

嵌入式学习-EXTI外部中断

STM32 是一种基于 ARM Cortex-M 内核的微控制器系列,广泛应用于嵌入式系统开发。中断(Interrupt)是 STM32 中一个非常重要的功能,它允许微控制器在执行主程序的同时,响应外部事件或内部事件的请求,从而实现…

Spark核心之06:知识点梳理

spark知识点梳理 spark_〇一 1、spark是什么 spark是针对于大规模数据处理的统一分析引擎,它是基于内存计算框架,计算速度非常之快,但是它仅仅只是涉及到计算,并没有涉及到数据的存储,后期需要使用spark对接外部的数…

Python:类型转换和深浅拷贝,可变与不可变对象

int():转换为一个整数,只能转换由纯数字组成的字符串 浮点型强转整型会去掉小数点及后面的数,只保留整数部分 #如果字符串中有数字和正负号以外的字符就会报错 float():整形转换为浮点型会自动添加一位小数 .0 如果字符串中有…

鸿蒙5.0实战案例:使用Snapshot Insight分析ArkTS内存问题

往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录) ✏️ 鸿蒙(HarmonyOS)北向开发知识点记录~ ✏️ 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…