java基础之集合(Collection单列集合和Map双列集合)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

目录

 集合体系图

一.Collection集合

 1.1List集合

1.1.1List集合的实现类:ArrayList集合

1.1.2LinkedList集合

1.2Set集合       

1.2.1Set集合的特点

1.2.2哈希值

1.2.3HashSet集合

1.2.4TreeSet集合

 二.Map集合

2.1Map集合的概述与特点

2.1.1Map集合概述

2.1.2Map集合的特点

2.1.3Map集合的一些常用方法:

2.2Map集合的遍历方式(方式一)

2.2.1步骤分析

2.2.2代码展示

2.3Map集合的遍历方式(方式二)

2.3.1步骤分析

2.3.2代码展示

三.java集合常考面试题

3.1Java 集合框架

 3.2集合框架底层数据结构总结

3.2.1Collection

3.2.2Map

3.3HashMap 和 Hashtable 的区别

 3.4Arraylist与 LinkedList 异同

3.5ArrayList 与 Vector 的区别:

 3.6Collection和Collections的区别



 集合体系图

一.Collection集合

Collection集合概述

是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素

JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现

常用方法:

Collection集合的遍历

 

  • 迭代器,集合的专用遍历方式

  • Iterator<E> iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到

  • 迭代器是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的

 1.1List集合

List集合概述:

有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素

与Set集合不同,列表通常允许重复的元素

List集合特点:

有索引

可以存储重复元素

元素存取有序

List集合特有的方法:

1.1.1List集合的实现类:ArrayList集合

ArrayList集合的底层是数组结构实现,查询快、增删慢,它的一些常用方法可以参考List集合的常用方法。

1.1.2LinkedList集合

LinkedList集合底层是链表结构实现,查询慢、增删快,它有一些特有的常用方法

1.2Set集合
       

1.2.1Set集合的特点

元素存取无序

没有索引、只能通过迭代器或增强for循环遍历

不能存储重复元素

1.2.2哈希值

是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值

如何获取哈希值

Object类中的public int hashCode():返回对象的哈希码值

哈希值的特点

同一个对象多次调用hashCode()方法返回的哈希值是相同的

默认情况下,不同对象的哈希值是不同的。而重写hashCode()方法,可以实现让不同对象的哈希值相同

1.2.3HashSet集合

HashSet集合的特点

底层数据结构是哈希表

对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致

没有带索引的方法,所以不能使用普通for循环遍历

由于是Set集合,所以是不包含重复元素的集合


HashSet集合保证元素唯一性源码分析:
1.根据对象的哈希值计算存储位置

如果当前位置没有元素则直接存入

如果当前位置有元素存在,则进入第二步

2.当前元素的元素和已经存在的元素比较哈希值

如果哈希值不同,则将当前元素进行存储

如果哈希值相同,则进入第三步

3.通过equals()方法比较两个元素的内容

如果内容不相同,则将当前元素进行存储

如果内容相同,则不存储当前元素

图解:

1.2.4TreeSet集合

TreeSet集合概述

元素有序,可以按照一定的规则进行排序,具体排序方式取决于构造方法

TreeSet():根据其元素的自然排序进行排序

TreeSet(Comparator comparator) :根据指定的比较器进行排序

没有带索引的方法,所以不能使用普通for循环遍历

由于是Set集合,所以不包含重复元素的集合

要理解好TreeSet必须先了解自然排序Comparable:

案例需求

存储学生对象并遍历,创建TreeSet集合使用无参构造方法

要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序

实现步骤

用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的

自然排序,就是让元素所属的类实现Comparable接口,重写compareTo(T o)方法

重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写

学生类

public class Student implements Comparable<Student> {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        r
集合多线程相关知识 notify():唤醒一个处于等待状态的线程,当然在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程。notifyAll():唤醒所有处于等待状态的线程,该方法并不是将对象的锁给所有线程,而是让他们竞争,只有获得锁的线程才能进入就绪状态。volaitle是一种轻量级的多线程同步问题解决方案,用volatile修饰的变量,线程自爱每次使用变量的时候,都会读取变量修改后的值。不同点:ArrayList是线程不安全的,效率高,Vector是线程安全的,效率慢,已经弃用。 阅读详情

相关推荐

java集合——List,Set

集合分为单列集合双列集合单列集合的顶级接口Collection双列集合的顶级接口Map collection-- 1.list接口: 存储数据的结构:堆栈:先进后出,队列:先进先出,数组:查询快,增删慢,链表:查询慢,增删快。 特点:有序,拿出来的顺序存进去的顺序是一样的。   Arraylist:底层是数组结构,增删慢,查找快   Linkedlist:底层是链表结构 ...

weixin_41933719的博客 278

集合框架

一.集合框架 概念:集合是一个容器,数组也是一个容器,但是呢数组的大小是固定的、类型是唯一的因此在某些需求上有限制 集合特点: 1、容器大小可变 2、可以存储多种数据类型的值【只能是引用数据类型,对基本数据类型而言存储的是其包装类】 3.根据集合的存储方式不同,将集合划分两大类:一类是单列集合,另一类是双列集合 关键词:Collection单列集合)、Map双列集合) 一.Collection 单列集合 List集合是有序集合集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。

weixin_51721670的博客 425

集合框架1(体系结构、collection接口、List接口)-第一阶段-第十二天

集合框架 一. 什么是集合集合是一个批量的数据储存的容器(内存),作用数组非常类似 但是数组有着以下缺陷 数组的长度一旦确定就不可改变 数组对数据提供出的方法不够丰富(大多都继承的是Object的方法) 二. Java中的体系结构 集合分为两大类:单列集合双列集合 单列集合:该集合体系中的每个元素都是一个值 双列集合:该集合体系中每个元素都有两个值组成分别是key键value值两者之间存在着映射关系 单列集合的顶级接口Collection双列集合的顶级接口Map Collectio

supertwoone的博客 202

Java单列集合Collection)与 双列集合Map

单列集合Collection) 一、集合(Collection) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组StringBuffer) -- 数组 而数组的长度固定,所以不适合做变化的需求,Java就提供了集合供我们使用。 (2)集合数组的区别? A:长度区别...

有道无术,术尚可求,有术无道,止于术。 3391

集合基础知识(Java基础

集合分为单列集合(元素是一个一个的)双列集合(元素是成对的)

szm0225的博客 1129

集合——大拼盘

集合 集合可分为Collection单列集合)、Map双列集合) 1、Collection概述 Collection单列集合的顶层接口,它代表一组对象,这些对象也称为Collection的元素; Collection提供了Set(元素不可重复)、List(元素可以重复)子接口的具体实现; 1.1、创建Collection对象 多态的方式 具体的实现类ArrayList //创建Collection对象:多态的方式 ArrayList Collection<Integer>

杜知李的博客 160

集合基础知识

集合基础知识 单列集合Java.util.Collection 双列集合Java.util.Map 单列集合是用于存储一系列符合某种规则的元素,有两个子接口 分别是 List Set List 常用的子类有 :ArrayList LinkedList Set 常用的子类有:HashSet TreeSet Hash也有一个子类:LinkedH...

weixin_30507481的博客 199

Java集合框架入门指南:从小白到基础掌握

集合框架的学习就像搭建积木,理解各个组件的特点后,就能根据需求灵活组合。手写各集合的CRUD操作比较不同实现类的性能差异尝试实现自定义对象的排序探索Map接口及其实现类记得在实际编码中多使用Java Doc(Ctrl+Q查看方法说明),逐步培养选择合适集合类型的能力。

2301_81834780的博客 1084

java集合框架

1.  什么是java集合框架?                答:  java集合框架就像是一个容器,专门用来存储Java类的对象。          2.  java集合框架位于什么包中?                答:  java.util.*;          3. java集合类怎么分类的?标准是什么?               答:  集合按照

sinat_37179161的博客 267

java中有哪些集合

java 中的集合分为单列集合双列集合单列集合顶级接口Collection,双列集合顶级接口MapCollection 的子接口有两个:List Set。 List 接口的特点:元素可重复,有序(存取顺序)。 list 接口的实现类如下: ArrayList:底层实现是数组,查询快,增删慢,线程不安全,效率高; Vector:底层实现是数组,查询快,增删慢,线程安全,效率低;【废弃】 LinkedList:底层实现是链表,增删快,查询慢,线程不安全,效率高; Set 接口的特点:元素唯一

weixin_53368860的博客 386

Collection-集合

Collection 集合基础知识回顾 集合类体系结构-单列集合 集合类体系结构-双列集合 单列集合中的存储问题 Collection集合概述使用 Collection集合的常用方法 Collection集合的遍历 集合的使用步骤 案例:Collection集合存储学生对象并遍历.........

weixin_67796933的博客 655

Java基础】-- 第13、14章:集合、泛型

韩顺平老师的Java基础课程笔记

qq_46656857的博客 282

<黑马程序员> 第六篇:集合

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 6.1 集合概述 6.1.1 集合出现的原因 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。   6.1.2 集合数组的不同 数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储基本数

Kalsifa的博客 588

Java学习笔记------集合()

简单介绍:集合数组一样都相当于是一个容器,但集合可以自动扩容。集合数组的对比:(1)数组的长度是固定的,集合的长度是可变的;(2)数组可以存储基本数据类型引用数据类型;集合可以存储引用数据类型,不能直接存储基本数据类型,需要先将基本数据类型转为其对应的包装类。基本数据类型对应的包装类:byte–Byte、short–Short、char–Character、int–Integer、long–Long、float–Float、double–Double、boolean–Boolean。

m0_46610658的博客 413

map学习笔记

collection单列集合map双列集合。其中包含&lt;k,v&gt;键值对,注意:键具有唯一性,而值不唯一。 在此列举三个读取方式:keyset,valueset,及entryset。 keyset是获取所有键的集合。valueset是获取所有值得集合。entryset是获取所有条目的集合,entry是每一个条目的意思包含其中的(键与值)。 具体用法为: 1 packag...

weixin_33898876的博客 134

Java 集合进阶(一)

摘要: Java集合框架分为单列(Collection)双列(Map)集合Collection接口包含List(有序可重复)Set(无序不重复)两大子接口,提供add/remove/contains等通用方法。集合遍历有三种方式:迭代器(可删除)、增强forLambda表达式(仅遍历)。List特有索引操作方法,支持五种遍历方式。四大基础数据结构:栈(先进后出)、队列(先进先出)、数组(查询快增删慢)链表(增删快查询慢),ArrayListLinkedList分别基于数组双向链表实现,性能互补

mifengxing的博客 184

java 基础集合

1、集合概念 2、Collection接口 2.1、List 接口 2.2、ArrayList集合 2.3、LinkedList 集合 2.4、Iterator接口 2.5、foreach 循环 2.6、Listlterator 接口 3、Set接口 3.1HashSet 集合接口 3.2TreeSet 集合 二叉树 接口 4、Map 接口 4.1、HashMap 集合 4.2...

Venus 的博客 527

[Java集合篇]Collection单列集合Map双列集合知识点汇总

[Java集合篇] Collection 单列集合 Map 双列集合的区别与遍历写在前面1.Collection 单列集合2. List 集合接口下的子类3.ArrayList集合的四种遍历方法4.Set集合接口下的子类5. HashSet 与 TreeSet 集合的两种遍历方法 写在前面 1. 为什么会出现集合 数组的长度是固定的,当添加的元素超过了数组的长度时需要对数组重新定义,而集合能存储...

SolarL的博客 4828

单列集合Collection双列集合Map(超全面解析)

ArrayList:适用于读操作频繁、插入删除操作较少的场景,查询效率高,插入删除效率低。它是大多数情况下的首选实现。LinkedList:适用于插入删除操作频繁,尤其是列表两端插入删除操作较多的场景。由于是链表结构,查询效率较低。Vector:与ArrayList类似,但内置同步机制使其线程安全。由于同步的开销,Vector性能较差,不推荐在单线程环境下使用。HashSet:适用于需要快速查找、插入删除元素的场景,但不关心元素的顺序。:适用于需要保持插入顺序的场景,同时保持HashSet。

阿鹏的博客 2018
上一篇: 通过程序实现斗地主过程中的洗牌,发牌和看牌
下一篇: 使用new String(char[ ] value,int off, int length)来将char[ ]数组转化成字符串时,出现 时new String(char[ ] value,int o
卿先生的学习之路
博客等级 码龄5年 480粉丝 56原创
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值