Java集合

【Java 集合】 集合概述Java 集合概览Java 集合,也叫作容器,主要是由两大接口派生而来:一个是Collection接口,主要用于存放单一元素;另一个是Map接口,主要用于存放键值对。对于CollectionListSetQueue。Java 集合框架如下图所示:Java 集合框架概览注:图中只列举了主要的继承派生关系,并没有列举所有关系。比方省略了等抽象类以及其他的一些辅助类,如想深入了解,可自行查看源码。说说 List, Set, Queue, Map 四者的区别?List。 阅读详情

集合

​ 特点: 提供一种存储空间可变的存储模型,存储的数据容量可以随时发生变化

​

集合类体系结构

集合
	Collection 单列集合
		List(可重复)
			ArrayList
			LinkedList
			...
		Set (不可重复)
			HashSet
			TreeSet
			...
	Map 双列集合
		HashMap
		...

Collection

​ 是单列集合的顶层接口

​ 创建Collection集合对象的方式:多态

常见方法:

boolean add(E e)				//添加元素
boolean remove(Object o)		//从集合中移除指定元素
void clear()					//清空集合中的元素
boolean contains(Object o)		//判断集合是否存在指定元素
boolean isEmpty()				//判断集合是否为空
int size()						//集合的长度

eg:

public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        //boolean add(E e)
        c.add("a");
        c.add("b");
        c.add("c");
        System.out.println(c); //[a, b, c]

        //remove
        c.remove("a");
        System.out.println(c); //[b, c]

        //contains
        System.out.println(c.contains("b")); //true

        //size
        System.out.println(c.size()); //2

        //clear
        c.clear();

        //isEmpty
        System.out.println(c.isEmpty()); //true
    }

集合遍历

​ Iterator–迭代器 [集合专用遍历方法]

​ 通过 Iterator iterator()来获取集合中元素的迭代器

Iterator的常见方法

E next() 			//返回迭代中的下个元素
boolean hasNext()	//如果迭代具有更多元素,则返回true

eg:

public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("a");
        c.add("b");
        c.add("c");

        //获取迭代器
        Iterator<String> iterator = c.iterator();

        while (iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);
        }
    }

List

​ 有序集合、有索引、允许重复

特有方法

void add(int index,E element)	//在指定位置插入指定元素
E remove(int index)				//删除指定元素
E set(int index,E element)		//修改指定位置的元素
E get(int index)				//返回指定位置的元素

eg:

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");

        //add
        list.add(1,"wow");
        System.out.println(list); //[a, wow, b, c]

        //remove
        list.remove("b");
        System.out.println(list);//[a, wow, c]

        //set
        list.set(1,"Hei");
        System.out.println(list);//[a, Hei, c]

        //get
        System.out.println(list.get(2));//c

    }

ArrayList

底层结构是数组。查询快、增删慢

LinkedList

底层结构是链表。查询慢、增删快

特有方法

public void addFirst(E e)	//在开头插入指定元素
public void addLast(E e)	//在末尾增加指定元素
public E getFirst()			//返回第一个元素
public E getLast()			//返回最后一个元素
public E removeFirst()		//删除并返回第一个元素
public E removeLast()		//删除并返回最后一个元素

Set

​ 不允许重复,无索引

HashSet

​ 由哈希表支持。

​ 对迭代顺序不做保证。

eg:

public static void main(String[] args) {
        HashSet<String> hashSet = new HashSet<>();

        hashSet.add("123");
        hashSet.add("456");
        hashSet.add("789");

        for (String s : hashSet) {
            System.out.println(s);
        }
        /*
            123
            456
            789
         */

    }

LinkedHashSet

​ 底层是哈希表和链表

​ 有可预测的迭代顺序

​ 无重复值

eg:

public static void main(String[] args) {
        LinkedHashSet<String> hashSet = new LinkedHashSet<>();

        hashSet.add("123");
        hashSet.add("456");
        hashSet.add("789");

        for (String s : hashSet) {
            System.out.println(s);
        }
        /*
            123
            456
            789
         */

    }

TreeSet

​ 按照一定的规则排序

​ 无索引、无重复

public static void main(String[] args) {
        TreeSet<Integer> treeSet = new TreeSet<>();

        treeSet.add(10);
        treeSet.add(20);
        treeSet.add(40);
        treeSet.add(30);

        for (Integer integer : treeSet) {
            System.out.println(integer);
        }
        /*
            10
            20
            30
            40
         */

    }

Map

public interface <K,V> K:键的类型,V:值的类型

​ 键不可重复,若键重复,则值将发生改变。

基本方法

V put(K key,V value)					//添加元素
V remove(Object key)					//根据键删除元素
void clear()							//移除所有元素
boolean containsKey(Object key)			//判断是否含有该减
boolean containsValue(Object value)		//判断是否含有该值
boolean isEmpty()						//判断集合是否为空
int size()								//集合的长度	

eg:

public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        //放入元素
        map.put(1,"aaa");
        map.put(2,"bbb");
        map.put(3,"ccc");
        System.out.println(map); //{1=aaa, 2=bbb, 3=ccc}
        System.out.println(map.size()); //3
        //remove
        map.remove(2);
        System.out.println(map); //{1=aaa, 3=ccc}
        //containsKey
        System.out.println(map.containsKey(1)); //true
        //containsValue
        System.out.println(map.containsValue("aaa"));//true
        //clear
        map.clear();
        System.out.println(map);//{}
        //isEmpty
        System.out.println(map.isEmpty());//true
    }

获取方法

V get(Object key)					//根据键获得值
Set<K> keySet()						//获取所有键的集合
Collection<V> values()				//获取所有值的集合
Set<Map.Entry<K,V>> entrySet()		//获取所有键值对对象的集合

eg:

public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        //放入元素
        map.put(1,"aaa");
        map.put(2,"bbb");
        map.put(3,"ccc");
        System.out.println(map); //{1=aaa, 2=bbb, 3=ccc}

        //get
        System.out.println(map.get(1)); //aaa

        //keySet
        System.out.println(map.keySet()); //[1, 2, 3]

        //values
        System.out.println(map.values()); //[aaa, bbb, ccc]
    }

Map集合的遍历

​ 第一种方式

public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        //放入元素
        map.put(1,"aaa");
        map.put(2,"bbb");
        map.put(3,"ccc");
        System.out.println(map); //{1=aaa, 2=bbb, 3=ccc}

        //获取所有键的结合
        Set<Integer> integers = map.keySet();

        //获取每一个键
        for (Integer integer : integers) {
            //通过键去寻找值
            String s = map.get(integer);
            System.out.println(s);
            /*
                aaa
                bbb
                ccc
             */
        }
    }

第二种方式

public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        //放入元素
        map.put(1,"aaa");
        map.put(2,"bbb");
        map.put(3,"ccc");
        System.out.println(map); //{1=aaa, 2=bbb, 3=ccc}

        //获取所有键值对对象的集合
        Set<Map.Entry<Integer, String>> entries = map.entrySet();

        //遍历键值对对象的集合
        for (Map.Entry<Integer, String> entry : entries) {
            //获取键值对对象获取键和值
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"="+value);
            /*
                1=aaa
                2=bbb
                3=ccc
             */
        }

    }
【Java集合 1】java集合有哪些 一、数组Array和集合的区别 1、数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型) 2、JAVA集合可以存储和操作数目不固定的一组数据。 3、若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。  注:使用相应的toArray()和Arrays.asList()方法可以相互转换。 二、Java集合 集合类存放于Java.util包中。 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是 阅读详情

相关推荐

Pika Labs vs Runway ML:零基础小白如何选择最适合自己的AI视频生成工具?

本文详细对比了Pika Labs和Runway ML两款AI视频生成工具,从操作界面、生成效果、隐藏成本、工作流适配性和未来兼容性五个维度进行分析。Pika Labs适合零基础用户快速生成社交媒体短内容,而Runway ML则更适合专业级视频制作。帮助用户根据自身需求选择最适合的AI视频生成工具。

wood5的博客 600

Java集合 之 单列集合

java的单列集合,看这一篇就够了

qq_73698057的博客 3098

用Python玩转LQR控制:3行核心代码实现倒立摆稳定控制(附Jupyter Notebook)

本文通过Python实战演示了如何使用LQR算法实现倒立摆的稳定控制。文章以直观方式解释LQR原理,提供从系统建模、核心代码求解到参数调优的完整流程,并附有可运行的Jupyter Notebook代码。重点介绍了如何利用SciPy库快速计算最优反馈增益,并通过仿真验证控制效果,为运动控制实践提供了即学即用的指南。

weixin_29311017的博客 83

Java【集合】

Java的特殊数据容器——集合

在下的博客 1878

IQA图像质量评价 数据集介绍(LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K)

LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K 数据集介绍

qq_37925923的博客 1万+

CocosCreator 面试题(十七)Cocos creator 固定宽度与固定高度的底层原理是什么?Cocos creator是如何做适配的?

通过固定宽度或固定高度的适配方式,可以使游戏在不同屏幕尺寸上保持一定的一致性,确保游戏中的元素的大小和位置相对稳定。具体选择哪种适配方式取决于你的游戏需求和设计考虑。在 Cocos Creator 中,你可以通过设置「设计分辨率」和使用相对坐标和布局方式来实现固定宽度或固定高度的适配。总之,Cocos Creator 提供了多种适配方式和工具,帮助你在不同屏幕尺寸上保持游戏画面的一致性。在 Cocos Creator 中,固定宽度和固定高度是两种常见的适配方式,用于在不同屏幕尺寸上保持游戏画面的一致性。

w风雨无阻w的专栏 1688

java集合

一、集合的由来   通常,我们的程序需要根据程序运行时才知道创建多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是数组只能放统一类型的数据,而且其长度是固定的,那怎么办呢?集合便应运而生了! 为了对集合有个...

uyhbrr的博客 9058

YOLOv8-Pose 姿态识别 RK3588 实战:从模型训练到 RKNN 部署,精度与推理速度双提升

本教程从YOLOv8-pose模型的姿态识别训练,到RK3588的边缘量化部署,为你打造了一套“高精度+高实时性+低成本”的人体姿态分析解决方案。无论是健身动作纠正、智能安防行为检测,还是工业人员姿态监控,这套技术都能直接复用——你只需替换数据集与业务逻辑,即可快速落地专属的边缘AI姿态识别系统。如果你在实践中遇到任何卡点,欢迎随时交流。记住,人体姿态识别的价值在于“关键点准、推理快、部署易”,而这三者的平衡,正是你通过本教程能掌握的核心能力。

FJN110的博客 364

Java——集合

List 集合的特点:List 是有序集合,它维护元素的插入顺序。可以通过索引访问元素,索引从 0 开始,依次递增。与 Set 不同,List 允许存储重复的元素。方法名描述在此集合中的指定位置插入指定的元素删除指定索引处的元素,返回被删除的元素修改指定索引处的元素,返回被修改的元素返回指定索引处的元素indexOf 方法返回指定元素第一次出现在列表中的索引,如果列表不包含该元素,则返回 -1。

weixin_73551991的博客 1930

DeepSeek 赋能智慧消防:以 AI 之力筑牢城市安全 “防火墙”

在数字化浪潮下,智慧消防系统亟需先进技术提升效能。DeepSeek 凭借 Transformer 架构与混合专家架构等核心技术,具备强大的多模态数据处理与智能决策能力,且支持本地化部署,保障数据安全。其在智慧消防领域的应用成效显著,从实现火灾风险动态感知与早期精准预警,到优化智能接警调度、设备健康管理,再到辅助应急指挥与疏散,有效降低火灾风险与事故损失。未来,DeepSeek 有望在智慧消防领域持续拓展,同时也需应对技术、数据等多方面挑战。

邓邓子的博客 1690

自定义View系列教程04--Draw源码分析及其实践

通过之前的详细分析,我们知道:在measure中测量了View的大小,在layout阶段确定了View的位置。 完成这两步之后就进入到了我们相对熟悉的draw阶段,在该阶段真正地开始对视图进行绘制。按照之前的惯例,我们来瞅瞅View中draw( )的源码 public void draw(Canvas canvas) { final int privateFlags = mPriv

谷哥的小弟 2万+

Java集合总结

Java中的集合(Collections)框架是一个非常重要的部分,它提供了一套设计良好的支持对一组对象进行操作的接口和类。这些接口和类位于java.util包中,使得我们可以以统一和灵活的方式处理对象集合。

2301_81579342的博客 1265

【WRF-Urban】使用 LCZ 替换 WRF 运行中的 LUCC 数据

使用 LCZ 替换 WRF 运行中的 LUCC 数据

WW、forever的博客 989

java集合中存放集合_集合与Java中的集合

java集合中存放集合 收集框架 Collection是Java Collection Framework的顶级接口。 List,Queue和Set是此框架的主要子接口。 集合接口是java.util.package的成员。 Collection接口中有几种方法可用于添加/删除元素,获取数组的大小,进行迭代或检查数组是否为空。 图片来源: javatpoint / collect...

专业的开发者“讨论” 2745

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java 集合

是工作中运用最多、最频繁的类,相比于数组(Array)来说,集合类的长度可变,更加方便开发。Java集合就像一个容器,可以存储任何类型的数据,也可以结合泛型来存储具体的类型对象。在程序运行时,Java集合可以动态地进行扩展,随着元素的增加而扩大。在Java中,集合类通常存在于java.util包中。Java集合主要由2大体系构成,分别是体系和体系,其中Collection和Map分别是2大体系中的顶层接口。Collection主要有三个子接口,分别为。

分享编程知识与技巧 致力于技术交流与学习 找我合作私聊 有偿解决计算机问题 1068

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【Java集合一】集合概述

介绍了Java集合框架,包括其概述、主要数据结构(如List、Set、Queue、Map)以及相关实现类(如ArrayList、LinkedList、HashSet、HashMap等)。内容涵盖了集合框架的原理、特点、使用方法以及常见操作。

叉烧钵钵鸡的博客 1214

Java 集合详解

发现一个特点,上述所有的集合类,除了 map 系列的集合,即左边集合都实现了 Iterator 接口,这是一个用于遍历集合中元素的接口,主要hashNext(),next(),remove()三种方法。我们知道在一般的数组中,元素在数组中的索引位置是随机的,元素的取值和元素的位置之间不存在确定的关系,因此,在数组中查找特定的值时,需要把查找值和一系列的元素进行比较,此时的查询效率依赖于查找过程中比较的次数。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。

2401_86940371的博客 1448

java中集合怎么定义_Java集合系列(一):集合的定义及分类

1. 集合的定义什么是集合呢?定义:集合是一个存放对象的引用的容器。在Java中,集合位于java.util包下。2. 集合和数组的区别(面试常问)提到容器,就会想起数组,那么集合和数组的区别是什么呢?(这里是重点,面试可能问的比较多)数组和集合都是Java中的容器数组的长度是固定的,集合的长度是可变的数组只能存储相同数据类型的数据,这里的数据类型可以是基本数据类型,也可以是引用类型集合可以存储不...

weixin_34952710的博客 4626

java 集合转json_Java集合 Json集合之间的转换

1. Java集合转换成Json集合关键类:JSONArray jsonArray = JSONArray.fromObject(Object obj);使用说明:将Java集合对象直接传进JSONArray.fromObject()中,得到一个JSONArray集合,再直接使用JSONArray的toString()方法,便可得到json集合示例代码:@Testpublic voidtestCr...

weixin_35851515的博客 3203

Java 集合——从 C++ 到 Java

Java 集合框架,其基本概念、接口和具体集合类,从 C++ 对比的角度进行讲解。

有耐心做好简单事情,坚持写blog 1189

java集合总结_java集合总结

一:Java集合产生的原因一方面,面向对 象语言对事物的体现 都是以对象的形式,为了方便对多 个对象的操作,就要对对象进行存储。 另-方面,使用Array存储对 象方面具有一些弊端,大小不能动态改变,而Java 集合就像一 种容器,可以动态地把多 个对象的引用放入容器中。所以,Java集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组。二:集合架构体系图●Java集合可分为C...

weixin_42601547的博客 1880

JAVA集合

它继承于HashSet,其所有的方法操作上又与HashSet相同,因此LinkedHashSet的实现上非常简单,只提供了四个构造方法,并通过传递一个标识参数,调用父类的构造器,底层构造一个LinkedHashMap来实现,在相关操作上与父类HashSet的操作相同,直接调用父类HashSet的方法即可。TreeMap实现SortedMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。

mry6的博客 1497
上一篇: Swagger
下一篇: File类
code_Floyed
博客等级 码龄7年 3粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值