当前位置: 首页 > 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());   // 5

        Collection c2 = new ArrayList();
        c2.add(123);
        c2.add(520.1314);
        System.out.println(c2.size());  // 2
        c.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));   // true
        System.out.println(c.contains(false));  // false

        String 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());   // 5
        c.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());   // 5
        c.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());    // false
        Collection 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() 

        反转集合中的元素。

相关文章:

  • 3D手眼标定转换详细实施步骤及原理概述
  • 初始提示词(Prompting)
  • dify智能体之不知道有啥用系列之使用chatflow让selenium打开特定网址
  • 数据序列化协议 Protobuf 3 介绍(Go 语言)
  • e2studio开发RA4M2(17)----ADC扫描多通道采样
  • 基于Java+SpringCloud+Vue的前后端分离的房产销售平台
  • 从小米汽车召回看智驾“命门”:智能化时代 — 时间就是安全
  • 【零基础到精通Java合集】第二十四集:ZGC收集器详解
  • 工业巡检进入‘无人化+AI’时代:无人机智能系统的落地实践与未来
  • 计算机考研复试高频五十问(第一期)
  • ARM处理器的Store Buffer大小有限,内存屏障也无法保障可见性顺序
  • break,continue,goto
  • EB-Cable许可分析的数据来源和采集方法
  • 【高并发】Java 并行与串行深入解析:性能优化与实战指南
  • 【数据库】数据库基础
  • Linux之命令记录【一】
  • HTML第三节
  • 希音(Shein)前端开发面试题集锦和参考答案
  • 【Linux篇】第一个系统程序 - 进度条
  • GradingPool-Seq使用方法
  • 推荐一些电商平台/网站推广优化的原因
  • WordPress更改角色插件/网站推广和优化系统
  • 专业做能源招聘的网站/windows优化大师靠谱吗
  • wordpress static page/如何优化网站快速排名
  • 做自己的网站需要什么/产品seo标题是什么
  • 买了网站模版怎么做/创意营销案例