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

JAVA |日常开发中数据集合详解

在这里插入图片描述
在这里插入图片描述

JAVA |日常开发中数据集合详解

  • 前言
  • 一、Java 集合框架概述
  • 二、主要集合类型
    • 2.1 List(列表)
    • 2.2 LinkedList
    • 2.3 Set(集合)
    • 2.4 TreeSet
    • 2.5 Map(映射)
    • 2.6 TreeMap
  • 三、集合的遍历方式
  • 结束语
  • 优质源码分享

JAVA |日常开发中数据集合详解,以下是JAVA |日常开发中数据集合详解:在 Java 日常开发中,数据集合是非常重要的一部分。它们提供了一种方便的方式来存储、操作和管理数据。以下是 Java 中常见的数据集合的详细介绍:Java 集合框架主要位于java.util包中,它提供了一套高性能、高质量的数据结构和算法,用于处理各种类型的数据集合。集合框架的设计目的是为了减少编程的工作量,提高代码的复用性和可维护性。

前言

        在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

在 Java 日常开发中,数据集合是非常重要的一部分。它们提供了一种方便的方式来存储、操作和管理数据。以下是 Java 中常见的数据集合的详细介绍:

一、Java 集合框架概述

    Java 集合框架主要位于java.util包中,它提供了一套高性能、高质量的数据结构和算法,用于处理各种类型的数据集合。集合框架的设计目的是为了减少编程的工作量,提高代码的复用性和可维护性。

二、主要集合类型

2.1 List(列表)

  • 特点:
    有序的集合,元素可以重复。它类似于数组,但是长度可变。
    可以通过索引访问元素,索引从 0 开始。
  • 常见实现类:
    ArrayList:
    基于数组实现。它的优点是随机访问速度快,因为内部是通过数组来存储元素的。例如,要访问第n个元素,时间复杂度为。
    但是在插入和删除元素(特别是在中间位置)时,可能需要移动大量元素,效率相对较低。插入一个元素的时间复杂度在最坏情况下为。

代码:

import java.util.ArrayList;
import java.util.List;

public class ArrayListExample {
    public static void main(String[] args) {
        List<String> arrayList = new ArrayList<>();
        arrayList.add("apple");
        arrayList.add("banana");
        arrayList.add("cherry");
        System.out.println(arrayList.get(1)); // 访问索引为1的元素,输出"banana"
        arrayList.remove(0); // 删除索引为0的元素
        System.out.println(arrayList);
    }
}

2.2 LinkedList

    基于链表实现。它在插入和删除元素时效率较高,特别是在链表头部或尾部操作。插入和删除操作的时间复杂度为(在链表头部或尾部)。
    但是随机访问速度慢,因为要遍历链表才能找到指定元素,访问一个元素的时间复杂度为。
代码:

import java.util.LinkedList;
import java.util.List;

public class LinkedListExample {
    public static void main(String[] args) {
        List<String> linkedList = new LinkedList<>();
        linkedList.add("apple");
        linkedList.add("banana");
        linkedList.add("cherry");
        linkedList.addFirst("orange"); // 在头部添加元素
        System.out.println(linkedList.getLast()); // 获取最后一个元素
        System.out.println(linkedList);
    }
}

2.3 Set(集合)

  • 特点:
    不允许有重复元素的集合。它主要用于存储不重复的数据。
  • 常见实现类:
    HashSet:
    基于哈希表实现。它的添加、删除和查询操作的效率都比较高,时间复杂度接近。
    它通过哈希函数来确定元素在集合中的存储位置。但是,当哈希冲突较多时,性能可能会下降。

代码:

import java.util.HashSet;
import java.util.Set;

public class HashSetExample {
    public static void main(String[] args) {
        Set<String> hashSet = new HashSet<>();
        hashSet.add("apple");
        hashSet.add("banana");
        hashSet.add("apple"); // 这个元素不会被添加,因为Set不允许重复
        System.out.println(hashSet);
    }
}

2.4 TreeSet

    基于红黑树实现。它会对元素进行排序,元素按照自然顺序或者自定义的比较器顺序存储。
添加、删除和查询操作的时间复杂度为。

代码:

import java.util.Set;
import java.util.TreeSet;

public class TreeSetExample {
    public static void main(String[] args) {
        Set<Integer> treeSet = new TreeSet<>();
        treeSet.add(3);
        treeSet.add(1);
        treeSet.add(5);
        System.out.println(treeSet); // 输出 [1, 3, 5],元素按照升序排列
    }
}

2.5 Map(映射)

  • 特点:
    用于存储键 - 值对(key - value)的数据结构。通过键来唯一标识值,键不能重复。
  • 常见实现类:
    HashMap:
    基于哈希表实现。它提供了快速的插入、删除和查找操作,时间复杂度接近。

代码:

import java.util.HashMap;
import java.util.Map;

public class HashMapExample {
    public static void main(String[] args) {
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("apple", 1);
        hashMap.put("banana", 2);
        System.out.println(hashMap.get("apple")); // 输出1
        hashMap.remove("banana");
        System.out.println(hashMap);
    }
}

2.6 TreeMap

    基于红黑树实现。它会对键进行排序,键按照自然顺序或者自定义的比较器顺序存储。
插入、删除和查找操作的时间复杂度为。

代码:

import java.util.Map;
import java.util.TreeMap;

public class TreeMapExample {
    public static void main(String[] args) {
        Map<Integer, String> treeMap = new TreeMap<>();
        treeMap.put(3, "apple");
        treeMap.put(1, "banana");
        treeMap.put(5, "cherry");
        System.out.println(treeMap); // 输出键值对按照键升序排列的结果
    }
}

三、集合的遍历方式

  • 使用迭代器(Iterator)遍历

    迭代器是一种设计模式,用于遍历集合中的元素。它提供了一种统一的方式来访问集合中的元素,而不管集合的具体实现。

示例(以ArrayList为例):

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("cherry");

        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
        }
    }
}
  • 增强型 for 循环(foreach)遍历

    它提供了一种简洁的方式来遍历集合或数组中的元素。

示例(以HashSet为例):

import java.util.HashSet;
import java.util.Set;

public class ForeachExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("apple");
        set.add("banana");
        set.add("cherry");

        for (String element : set) {
            System.out.println(element);
        }
    }
}
  • 使用索引遍历(针对 List)

    因为List可以通过索引访问元素,所以可以使用普通的for循环通过索引来遍历。

示例(以LinkedList为例):

import java.util.LinkedList;
import java.util.List;

public class IndexBasedTraversalExample {
    public static void main(String[] args) {
        List<String> list = new LinkedList<>();
        list.add("apple");
        list.add("banana");
        list.add("cherry");

        for (int i = 0; i < list.size(); i++) {
            String element = list.get(i);
            System.out.println(element);
        }
    }
}

    在日常 Java 开发中,根据具体的需求选择合适的集合类型和遍历方式可以提高程序的性能和可读性。例如,当需要存储有序且可重复的数据时,选择List;当需要存储不重复的数据时,选择Set;当需要存储键值对时,选择Map。同时,在遍历集合时,根据集合的类型和操作需求选择合适的遍历方式,如需要在遍历过程中删除元素,可能使用迭代器比较合适。

结束语

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


--------------- 业精于勤,荒于嬉 ---------------
 

请添加图片描述

--------------- 行成于思,毁于随 ---------------

优质源码分享

  • 【百篇源码模板】html5各行各业官网模板源码下载

  • 【模板源码】html实现酷炫美观的可视化大屏(十种风格示例,附源码)

  • 【VUE系列】VUE3实现个人网站模板源码

  • 【HTML源码】HTML5小游戏源码

  • 【C#实战案例】C# Winform贪吃蛇小游戏源码


在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/144187392(防止抄袭,原文地址不可删除)


http://www.kler.cn/a/421660.html

相关文章:

  • JAVA-响应报文转XML
  • 浅谈网络 | 应用层之流媒体与P2P协议
  • 给UE5优化一丢丢编辑器性能
  • Ubuntu 查看应用的版本列表和新版本
  • freeswitch通过bridge+定制化distributor,进行sip媒体的负载均衡代理
  • 开发者如何使用GCC提升开发效率GUI操作
  • el-select 修改样式
  • 光控资本:积极布局 跨年行情渐行渐近
  • SQL进阶——JOIN操作详解
  • Base 崛起,SynFutures 或成生态系统中最具潜力应用
  • 【C++】从零到一掌握红黑树:数据结构中的平衡之道
  • How to use the ‘git log‘ command to get change log for each file?
  • Redis进行性能优化可以考虑的一些策略
  • Android13 允许桌面自动旋转
  • linux 获取公网流量 tcpdump + python + C++
  • D84【python 接口自动化学习】- pytest基础用法
  • 【查询基础】.NET开源 ORM 框架 SqlSugar 系列
  • 基于Java Springboot药店管理系统
  • Java基础面试题15:简述什么是 Servlet?
  • MATLAB —— 机械臂工作空间,可达性分析