首页 > 编程语言 >Java中有哪些集合类?常用的几种java集合类总结 详细解读 Java 的集合类

Java中有哪些集合类?常用的几种java集合类总结 详细解读 Java 的集合类

时间:2024-09-27 18:50:32浏览次数:3  
标签:java list 接口 add 集合 Java

Java 提供了丰富的数据结构选择,用以处理和存储对象,这些对象通过 Java 的集合类框架(Java Collections Framework)来组织和管理。集合类使得开发者能够更加高效地处理数据,如排序、搜索、迭代等操作。本文将系统地介绍 Java 的集合类,包括其核心接口、常用实现类以及使用示例。

集合类框架的概述

Java 的集合框架是一个统一的架构,用于表示和操作一组对象。它提供了多种接口和类,遵循了一定的设计原则,具备更高的灵活性和可扩展性。Java 集合框架主要包括以下几个核心接口:

  • Collection:集合的根接口。
  • List:有序集合,允许重复元素。
  • Set:不允许重复元素的集合。
  • Map:键值对集合,键唯一但值可以重复。
  • Queue:用于表示数据结构中的队列。

1. Collection 接口

Collection 接口是所有集合类的根接口,从它直接继承的接口主要有 List, Set, 和 Queue。虽然 Map 接口并不直接继承自 Collection,而是与之平行存在,但它依旧是 Java 集合框架的重要部分。

示例代码:
import java.util.Collection;
import java.util.ArrayList;

public class CollectionExample {
    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<>();
        collection.add("Java");
        collection.add("Python");
        collection.add("C++");

        System.out.println("Collection contents: " + collection);
    }
}

2. List 接口

List 接口表示一个有序集合,它允许精确控制元素的插入位置并允许重复元素。List 接口的常见实现类有:

  • ArrayList:基于动态数组实现,随机访问速度快。
  • LinkedList:基于链表实现,适合频繁的元素插入和删除操作。
  • Vector:线程安全的可变数组,但较少使用,因为 ArrayList 提供了相佳的效率。
示例代码:
import java.util.ArrayList;
import java.util.List;

public class ListExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Python");
        list.add("C++");
        list.add("C++"); // 允许重复

        System.out.println("List contents: " + list);
        System.out.println("Element at index 2: " + list.get(2));
    }
}

3. Set 接口

Set 接口表示一个不允许重复的集合。常见的 Set 实现包括:

  • HashSet:基于哈希表,提供快速的查找和插入操作。
  • LinkedHashSet:维护插入顺序的哈希表。
  • TreeSet:基于红黑树,有序集合,支持自然排序或者自定义排序。
示例代码:
import java.util.HashSet;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("Java");
        set.add("Python");
        set.add("C++");
        set.add("Java"); // 不会被添加,HashSet 不允许重复

        System.out.println("Set contents: " + set);
    }
}

4. Map 接口

Map 接口存储键值对,其中每个键都是唯一的。常见的 Map 实现类有:

  • HashMap:基于哈希表实现,访问速度快,未保证元素顺序。
  • LinkedHashMap:保持插入顺序的哈希表。
  • TreeMap:基于红黑树实现,提供有序键集合。
示例代码:
import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("Java", 90);
        map.put("Python", 85);
        map.put("C++", 95);

        System.out.println("Map contents: " + map);
        System.out.println("Score of Python: " + map.get("Python"));
    }
}

5. Queue 接口

Queue 接口用于表示一组排队的数据结构,支持按照先进先出(FIFO)原则来处理元素。常见实现包括:

  • LinkedList:作为队列的实现。
  • PriorityQueue:元素根据优先级进行排序。
  • ArrayDeque:双端队列,支持在两端进行增删操作。
示例代码:
import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        queue.offer("Java");
        queue.offer("Python");
        queue.offer("C++");

        System.out.println("Queue contents: " + queue);
        System.out.println("Removed element: " + queue.poll()); // 出队
        System.out.println("Queue after removal: " + queue);
    }
}

6. 集合类的操作

Java 的集合类框架支持多种集合操作,例如遍历、搜索、排序和集合之间的操作(如并集、交集等)。

遍历示例:
import java.util.ArrayList;
import java.util.List;

public class TraverseExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Java");
        list.add("Python");
        list.add("C++");

        // 使用增强的 for 循环遍历
        for (String language : list) {
            System.out.println(language);
        }

        // 使用迭代器
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

7. 性能考虑

不同的集合实现具有不同的性能特征,理解这些特征是选择合适的集合实现的关键。一般来说:

  • ArrayList 在随机访问和迭代方面表现良好,但在插入和删除方面比较慢。
  • LinkedList 在插入和删除操作方面效率高,但随机访问速度较慢。
  • HashSet 提供常数时间复杂度的添加和删除操作,但不保证顺序。
  • TreeSet 保持元素顺序,但操作复杂度为 O(log n)。

总结

Java 集合类框架为开发者提供了强大的工具,以方便有效地操作数据。通过理解每种集合接口及其实现的特性,可以帮助我们在开发过程中做出更好的选择。结合实际使用场景,选择合适的集合,可以提升应用的性能和可维护性。

希望本篇博客能帮助您深入理解 Java 的集合类框架,并在您的项目中利用这些强大的工具。

标签:java,list,接口,add,集合,Java
From: https://blog.csdn.net/qq_52341510/article/details/142570422

相关文章

  • 事件【JavaScript】
    1.事件事件是用户或浏览器动作的表示,JavaScript中的一切交互都是通过事件来处理的。2. 事件冒泡(EventBubbling)事件冒泡是指事件从最具体的元素(即触发事件的元素)开始触发,然后逐级向上传播到较为不具体的元素(即该元素的父元素、祖先元素),直到到达最顶层的元素(通常是documen......
  • Java基础语法测试
    classEnumTest{publicstaticvoidmain(String[]args){Sizes=Size.SMALL;Sizet=Size.LARGE;System.out.println(s==t);//falseSystem.out.println(s.getClass().isPrimitive());Sizeu=Size.valueOf("SMALL");System.out.println......
  • java计算机毕业设计五邑大学超市网上销售软件设计(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和电子商务的普及,高校内部超市的传统经营模式正面临前所未有的挑战与机遇。五邑大学作为一所充满活力的高等学府,其师生群体对......
  • 计算机毕业设计推荐-基于Java的班级学生签到管理小程序 校园课程管理小程序【源码+讲
    精彩专栏推荐订阅:在下方专栏......
  • JavaScript 网页设计案例详解( 最新技术趋势)
    前言随着JavaScript生态系统的不断发展和浏览器支持的不断完善,2024年的前端开发技术已经变得更加现代化和高效。JavaScript在网页设计中的应用不再局限于基础的交互,它与最新的Web标准、API结合,为开发者带来了丰富的功能和出色的性能优化。本文将通过一个网页设计案例,结......
  • Java设计模式6 - 策略模式
    策略模式策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 策略模式的结构策略模式是对算法的包装,是把使用算法的责任和算法本身分开。策略模式通常是把一系列的算法包装......
  • Java中的栈数据结构及其应用
    Java中的栈数据结构及其应用栈是一种线性数据结构,遵循后进先出(LIFO)的原则,即最后插入的元素最先被移除。栈的基本操作包括入栈(push)、出栈(pop)和查看栈顶元素(peek)。本文将介绍栈的基本结构、操作及在JDK中的应用。栈的基本结构一个简单的栈可以用数组或链表实现,下面是基于链......
  • JavaSE笔记_dai01
    标识符(一)标识符的命名规则1.由字母、数字、下划线、$组成,不能由数字开头2.严格区分大小写3.不能使用系统保留字4.参考驼峰命名法(二)标识符的命名规范1.见名知意2.参考驼峰命名法3.类、接口:都首字母大写,其他单词小写4.常量:全部大写,用下划线分割5.方法、变量:首字母小写,后......
  • JavaScript 闭包
    什么是闭包?简单理解:闭包=内层函数+外层函数的变量。正如前面所说的作用域链也会涉及到闭包,如下:leta=6;//全局作用域functionf(){a=7;//父级作用域functiond(){a=8;//自己的作用域console.log(a);}d();}f(); 闭包的官方......
  • 中国剩余定理(一次同余问题) Java
    /***中国剩余定理*/publicclassChineseRemainderTheorem{//扩展欧几里得算法,返回gcd(a,b)以及x,y使得ax+by=gcd(a,b)publicstaticintextendedGCD(inta,intb,int[]xy){if(b==0){xy[0]=1;xy[1]......