当前位置: 首页 > news >正文

Java基础关键_017_集合(一)

目  录

一、概述

二、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)

        向集合中添加元素。

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()

        获取集合中元素的个数。

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)

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

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 。

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 。

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()

        清空集合。

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 。

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()

        将集合转换成一维数组。

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.通用遍历(迭代)※

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.lryc.cn/news/546494.html

相关文章:

  • Rust编程实战:Rust实现简单的Web服务,单线程性能问题
  • GitLab 密钥详解:如何安全地使用 SSH 密钥进行身份验证
  • 《论数据分片技术及其应用》审题技巧 - 系统架构设计师
  • 【C++】当一个类A中没有声明任何成员变量和成员函数,sizeof(A)是多少?
  • Maven 私服的搭建与使用(一)
  • Ubuntu20.04双系统安装及软件安装(五):VSCode
  • linux网络(3)—— socket编程(1)socket基础认识
  • 【Kubernets】K8S内部nginx访问Service资源原理说明
  • 使用Docker搭建Oracle Database 23ai Free并扩展MAX_STRING_SIZE的完整指南
  • 使用pytorch和opencv根据颜色相似性提取图像
  • MySQL 8.X 报错处理
  • Ubuntu 22.04安装OpenJDK 17
  • 【时序预测】时间序列有哪些鲁棒的归一化方法
  • nlp第九节——文本生成任务
  • STM32MP1xx的启动流程
  • wgcloud-server端部署说明
  • 大模型Agent:人工智能的崭新形态与未来愿景
  • 专题二最大连续1的个数|||
  • 【ORACLE】ORACLE19C在19.13版本前的一个严重BUG-24761824
  • 2025国家护网HVV高频面试题总结来了03(题目+回答)
  • CentOS vs Ubuntu - 常用命令深度对比及最佳实践指南20250302
  • SQL命令详解之常用函数
  • IndexError: index 0 is out of bounds for axis 1 with size 0
  • C++学习之C++初识、C++对C语言增强、对C语言扩展
  • k8s面试题总结(八)
  • 《今日-AI-编程-人工智能日报》
  • Koupleless 2024 年度报告 2025 规划展望
  • C与C++中inline关键字的深入解析与使用指南
  • 记录linux安装mysql后链接不上的解决方法
  • Java 大视界 -- Java 大数据在智能金融反欺诈中的技术实现与案例分析(114)