Java Collection(集合) 接口

Date: 2025-05-21 20:21:32 author: lijianzhan

Java 集合框架提供了一组接口和类,以实现各种数据结构和算法。

以下是关于 Java 集合的核心内容说明:

java 复制代码
        /**
         * Java Collection Framework 说明:
         *
         * 在 Java 中,集合(Collection) 是一个核心的编程概念,用于存储、管理和操作一组对象。Java 集合框架(Java Collections Framework, JCF)提供了一套标准化的接口和类,使得开发者可以高效地处理数据集合(如列表、集合、队列、映射等)
         * Java 集合框架基于接口设计的,并且分为了两大类分别是Collection接口和Map接口
         *
         * Collection 接口(说明:存储单一元素)特点:
         *  下面三种接口是Collection接口的子接口
         *  1.List:
         *      1.有序排列
         *      2.允许重复
         *      3.如 ArrayList, LinkedList(ps:LinkedList类提供了双向链接列表数据结构的实现)
         *  2.Set:
         *      1.无序排列
         *      2.不允许重复
         *      3.如 HashSet, TreeSet
         *  3.Queue:
         *      1.队列
         *      2.先进先出(FIFO)
         *      3.如 LinkedList, PriorityQueue
         *
         * Map 接口(说明:Map接口允许元素以键/值对(Key-Value)的形式存储。键是唯一的名称,可用于访问map中的特定元素。而且,每个键都有一个与之关联的值)特点:
         *  1.键唯一
         *  2.值可重复
         *  3.如 HashMap, TreeMap
         *
         * */
  1. 在Java中,List接口是一个有序的集合,它允许我们按顺序存储和访问元素:
    为了使用List接口的功能,我们可以使用以下类:
    1.数组列表(ArrayList类)
    2.链表(LinkedList类)
    3.向量(vector类)
    4.堆栈(Stack类)

(1)List 接口的实现类

java 复制代码
import java.util.ArrayList;
import java.util.List;

class Main {
    public static void main(String[] args){
        /*
         * ArrayList:
         *  1.基于动态数组实现
         *  2.线程不安全,适用于单线程环境
         *  3.可以包含重复的元素
         */

        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);

        System.out.println("List: " + list);

        //从列表中访问元素
        int number = list.get(2);
        System.out.println("访问元素: " + number);

        //使用indexOf()方法
        int index = list.indexOf(2);
        System.out.println("位置3的元素是 " + index);

        //从列表中删除元素
        int removedNumber = list.remove(1);
        System.out.println("删除元素: " + removedNumber);
    }
}
复制代码
输出结果示例:

(2)List 接口的实现类

java 复制代码
import java.util.LinkedList;
import java.util.ListIterator;

class Main {
    public static void main(String[] args){
        /*
         * ArrayList:
         *  1.基于双向链表实现
         *  2.实现了 Deque 接口,可用作队列或栈
         *  3.可以包含重复的元素
         */

        //创建整数类型的链表
        LinkedList<Integer> linkedList = new LinkedList<>();

        linkedList.add(1);
        linkedList.add(2);
        System.out.println("LinkedList: " + linkedList);

        //从链表中获取元素
        int number = linkedList.get(1);
        System.out.print("索引1处的元素: " + number);

        //创建字符串类型的链表
        LinkedList<String> linkedList2 = new LinkedList<>();

        //将元素添加到 LinkedList2
        linkedList2.add("Dog");
        linkedList2.add("Cat");
        linkedList2.add("Horse");
        System.out.println("linkedList2: " + linkedList2);

        //使用索引添加元素到 LinkedList2
        linkedList2.add(0,"Danger");
        linkedList2.add(1,"Monkey");
        linkedList2.add(2,"Duck");

        System.out.println("linkedList2: " + linkedList2);

        // 将一个链表添加到另一个链表,新建animals链表
        LinkedList<String> animals = new LinkedList<>();
        animals.add("Crocodile");

        //把 linkedList2 的所有元素都添加到 animals 上
        animals.addAll(linkedList2);
        System.out.println("Animals: " + animals);

        //创建ListIterator对象
        ListIterator<String> listIterate = animals.listIterator();
        listIterate.add("Dog");
        listIterate.add("Cat");

        System.out.println("listIterate: " + animals);

        // 使用iterator()方法 访问元素
        while(listIterate.hasNext()) {
            System.out.print(listIterate.next());
            System.out.print(", ");
        }

    }
}
复制代码
输出结果示例:
  1. Set集合不能包含重复的元素:
    为了使用Set接口的功能,我们可以使用以下类:
    1.HashSet
    2.LinkedHashSet
    3.EnumSet
    4.TreeSet
    Set 接口的实现类:
    (1)HashSet
java 复制代码
import java.util.HashSet;
import java.util.Set;

class Main {
    public static void main(String[] args){
        /*
         * HashSet:
         *  1.基于哈希表实现,无序,插入/查询时间复杂度为 O(1)
         *  2.依赖 hashCode() 和 equals() 方法判断元素是否重复。
         */

        // 创建set
        Set<Integer> setList = new HashSet<>();
        setList.add(10);
        // 重复元素会被忽略
        setList.add(10);

        System.out.println(setList);

    }
}

代码运行结果:

(2)TreeSet

java 复制代码
import java.util.TreeSet;

class Main {
    public static void main(String[] args){
        /*
         * TreeSet:
         *  1.基于红黑树实现,自然排序或自定义排序,插入/查询时间复杂度为 O(log n)
         *  2.元素必须实现 Comparable 接口或传入 Comparator
         */

        // 创建TreeSet
        TreeSet<String> treeSet = new TreeSet<>();
        treeSet.add("Banana");
        treeSet.add("Apple"); // 自动按字母顺序排序

        System.out.println(treeSet);

    }
}

代码运行结果:

总结:Java 集合框架是处理数据的核心工具,能够理解其接口和实现类的特性,掌握集合的使用可以高效的编程。

相关推荐
daidaidaiyu14 分钟前
Jetlinks 物联网平台 开源版学习源码分析
java·mqtt·rxjava·tcp
j***78881 小时前
clickhouse-介绍、安装、数据类型、sql
java
q***47181 小时前
Spring中的IOC详解
java·后端·spring
vx_vxbs662 小时前
【SSM电影网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·小程序·php·idea
SunnyDays10112 小时前
如何使用 Java 删除 Word 文档中的水印
java·删除word文档水印
毕设源码-邱学长3 小时前
【开题答辩全过程】以 基于Java企业人事工资管理系统为例,包含答辩的问题和答案
java·开发语言
转转技术团队3 小时前
回收系统架构演进实战:与Cursor结对扫清系统混沌
java·架构·cursor
AI分享猿3 小时前
Java后端实战:SpringBoot接口遇异常请求,轻量WAF兼顾安全与性能
java·spring boot·安全
稚辉君.MCA_P8_Java3 小时前
Gemini永久会员 Java中的四边形不等式优化
java·后端·算法
DKPT3 小时前
ZGC和G1收集器相比哪个更好?
java·jvm·笔记·学习·spring