首页 > 其他分享 >集合框架笔记

集合框架笔记

时间:2025-01-11 11:57:39浏览次数:3  
标签:index 元素 框架 int Object value 笔记 key 集合

一、接口及实现类:

Collection接口:

子接口-----:
1 List接口:存储有序的,可重复的数据
实现类:

ArrayList(主要实现类)、LinkedList、Vector

2 Set接口:存储无序的、不可重复的数据(类似于集合)
实现类:

HashSet(主要实现类)、LinkedHashSet、TreeSet

Map接口:key-value对--->键值对

实现类:

HashMap(主要实现类)、LinkedHashMap、TreeMap、Hashtable、Properties

Collection接口的方法:

1.添加:

add( )

addAll( )

2.判断:

int size()获取实际存储的元素个数,返回int型

boolean contains()判断是否存在 一个对象,返回boolean类型

3.删除:

void clear()清空集合元素

boolean remove()删除某个元素

4.iterator():返回迭代器对象,用于集合遍历
子接口:

List:

小结:
    增
        add(Object obj)
        addAll(Collection coll)
    删
        remove(Object obj)
        remove(int index)
    改
        set(int index, Object ele)
    查
        get(int index)
    插
        add(int index, Object ele)
        addAll(int index, Collection eles)
    长度
        size()
    遍历
        iterator() :使用迭代器进行遍历
        增强for循环
        一般的for循环

二、遍历集合元素的方式

1.Iterator(迭代器)接口-----

1.获取迭代器对象

Iterator iterator=coll.iterator();//多态的方式,右边调用方法,返回一个对象

2.实现遍历
while(iterator.hasNext()){
    System.out.println(iterator.next()); //next():①指针下移 ② 将下移以后集合位置上的元素返回
}
​
额外:迭代器执行原理:

2.增强for循环

for(元素的数据类型 局部变量 : Collection集合或数组){ 
    //操作局部变量的输出操作
}
//这里局部变量就是一个临时变量,自己命名就可以

三、 Collection子接口

1.List----有序性

1.常用方法
第一部分:

Collection中声明的15个常用方法;

第二部分:因为List是有序的,进而就有索引,进而就会增加一些针对索引操作的方法。
插入元素
  - `void add(int index, Object ele)`:在index位置插入ele元素
  - boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
- 获取元素
  - `Object get(int index)`:获取指定index位置的元素
  - List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
- 获取元素索引
  - int indexOf(Object obj):返回obj在集合中首次出现的位置
  - int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
- 删除和替换元素
  - `Object remove(int index)`:移除指定index位置的元素,并返回此元素
  - `Object set(int index, Object ele)`:设置指定index位置的元素为ele
2.List及其实现类特点
​
java.util.Collection:存储一个一个的数据
    |-----子接口:List:存储有序的、可重复的数据 ("动态"数组)
           |---- ArrayList:List的主要实现类;线程不安全的、效率高;底层使用Object[]数组存储
                           在添加数据、查找数据时,效率较高;在插入、删除数据时,效率较低
           |---- LinkedList:底层使用双向链表的方式进行存储;在对集合中的数据进行频繁的删除、插入操作时,建议使用此类
                           在插入、删除数据时,效率较高;在添加数据、查找数据时,效率较低;
           |---- Vector:List的古老实现类;线程安全的、效率低;底层使用Object[]数组存储

2.Set----无序性、不可重复性

1.常用方法:即Collection的15个常用方法
2.Set及其实现类特点
​
java.util.Collection:存储一个一个的数据
    |-----子接口:Set:存储无序的、不可重复的数据(高中学习的集合)
           |---- HashSet:主要实现类;底层使用的是HashMap,即使用数组+单向链表+红黑树结构进行存储。(jdk8中)
                |---- LinkedHashSet:是HashSet的子类;在现有的数组+单向链表+红黑树结构的基础上,又添加了
                                     一组双向链表,用于记录添加元素的先后顺序。即:我们可以按照添加元素的顺序
                                     实现遍历。便于频繁的查询操作。
           |---- TreeSet:底层使用红黑树存储。可以按照添加的元素的指定的属性的大小顺序进行遍历。
注意:添加到HashSet/LinkedHashSet中元素的要求:

要求元素所在的类要重写两个方法:equals() 和 hashCode()。 同时,要求equals() 和 hashCode()要保持一致性!我们只需要在IDEA中自动生成两个方法的重写即可,即能保证两个方法的一致性。

四、Map接口

1.常用方法
- 添加、修改操作:
  - Object put(Object key,Object value):将指定key-value添加到(或修改)当前map对象中
  - void putAll(Map m):将m中的所有key-value对存放到当前map中
- 删除操作:
  - Object remove(Object key):移除指定key的key-value对,并返回value
  - void clear():清空当前map中的所有数据
- 元素查询的操作:
  - Object get(Object key):获取指定key对应的value
  - boolean containsKey(Object key):是否包含指定的key
  - boolean containsValue(Object value):是否包含指定的value
  - int size():返回map中key-value对的个数
  - boolean isEmpty():判断当前map是否为空
  - boolean equals(Object obj):判断当前map和参数对象obj是否相等
- 元视图操作的方法:
  - Set keySet():返回所有key构成的Set集合
  - Collection values():返回所有value构成的Collection集合
  - Set entrySet():返回所有key-value对构成的Set集合
2.Map及其实现类对比
​
java.util.Map:存储一对一对的数据(key-value键值对,(x1,y1)、(x2,y2) --> y=f(x),类似于高中的函数)
    |---- HashMap:主要实现类;线程不安全的,效率高;可以添加null的key和value值;底层使用数组+单向链表+红黑树结构存储(jdk8)
        |---- LinkedHashMap:是HashMap的子类;在HashMap使用的数据结构的基础上,增加了一对双向链表,用于记录添加的元素的先后顺序,
                            进而我们在遍历元素时,就可以按照添加的顺序显示。
                            开发中,对于频繁的遍历操作,建议使用此类。
    |---- TreeMap:底层使用红黑树存储;可以按照添加的key-value中的key元素的指定的属性的大小顺序进行遍历。需要考虑使用①自然排序 ②定制排序。
    |---- Hashtable:古老实现类;线程安全的,效率低;不可以添加null的key或value值;底层使用数组+单向链表结构存储(jdk8)
        |---- Properties:其key和value都是String类型。常用来处理属性文件。

标签:index,元素,框架,int,Object,value,笔记,key,集合
From: https://blog.csdn.net/2403_87867004/article/details/145075139

相关文章

  • STLG_02_28_SQL Server学习笔记总结
        从24年前与那本绿色封面的王珊老师的《数据库概论》初次接触,到如今女儿已步入大学殿堂,岁月如梭,光阴荏苒,青葱岁月,转瞬即逝。在云盘的尘封角落,翻寻出2002年开始那一份份青涩的MSSQLServer笔记,彼时的我们,身处一个尚未被互联网广泛覆盖的年代,缺乏名师的点拨与系统的......
  • OpenCL入门笔记
    1、概述1.1、OpenCL标准OpenCL(OpenComputingLanguage)是一个开放标准的并行编程框架,它允许开发者在异构系统上利用各种计算设备(例如CPU、GPU、FPGA等)来加速任务,目前已被广泛应用于视频处理、医学成像、机器学习等领域。OpenCL最初由苹果公司提出,并在与AMD、IBM、Intel、NVID......
  • 微服务电商平台课程六:后端代码框架认识
    本地环境搭建好,大家可以进行调试,并能够修改其中代码。后端技术栈SpringBoot是伴随着Spring4.0共同诞生的,它的目的就是简化spring的配置及开发,并协助开发人员可以整体管理应用程序的配置而不再像以前那样需要做大量的配置工作,它提供了很多开发组件,并且内嵌了web应用容器,......
  • [数据结构学习笔记11] 前序树(Trie/Prefix tree)
    前序树(Trie/Prefixtree),它的一个典型的应用场景在搜索引擎里,当你输入查询关键字的时候,会联想自动补齐你想要输入的内容。比如,你输入app,下面可能会出来联想Apple,Applied等等。什么是Trie?Trie(读作Try)是这样一个数据结构,它把短语或者单词分解字母,然后以一种方式去存储,让添加、删......
  • Java学习,数组转集合
    Java中将数组转换为集合(例如 List)是一项常见的操作。Java提供了多种方法来实现这一功能,其中最简单和常用的方法是使用 java.util.Arrays 类和 java.util.Collections 类中的静态方法。数组转集合,示例:importjava.util.List;importjava.util.ArrayList;importjava.u......
  • 高等数学(上)题型笔记(五)定积分
    持续更新中... 定积分的概念 定积分的几何意义 定积分的性质 打勾的要会 微积分的基本公式 积分上限函数及其导数 牛顿—莱布尼茨公式 (N—L公式)定积分的换元积分法  技巧:对称区间上的偶倍奇零定积分的分部积分法反常积分的敛散性 ......
  • 高等数学学习笔记 ☞ 洛必达法则与泰勒公式
    1. 洛必达法则        (1)当时,。(2)在的去心邻域内,存在且。(3)存在或者为无穷大。满足以上3个条件,则有:注意事项:①:求解同一函数极限,洛必达法则可以多次重复使用,每次使用之前需要检验是否满足洛必达法则条件。②:函数求导之后的极限为无穷大,那么函数求导之前......
  • 《CPython Internals》阅读笔记:p76-p95
    《CPythonInternals》学习第5天,p76-p95总结,总计20页。一、技术总结无。二、英语总结(生词:1)1.checkvi/vt.toexamsthtoensureitiscorrect,true,oringoodcondition.示例:(1)AfterI'dfinishedthetest,Icheckedmyanswersformistakes.这种用法比......
  • 【Vim Masterclass 笔记09】S06L22:Vim 核心操作训练之 —— 文本的搜索、查找与替换操
    文章目录S06L22Search,Find,andReplace-PartOne1从光标位置起,正向定位到当前行的首个字符b2从光标位置起,反向查找某个字符3重复上一次字符查找操作4定位到目标字符的前一个字符5单字符查找与Vim命令的组合6跨行查找某字符串7Vim的增量查找8Vim搜索的......
  • 线段树分治-学习笔记
    线段树分治-学习笔记阅前须知:本文给出了线段树分治的一道例题以及多道习题,同时给出了部分实现的代码,帮助学习线段树分治。总述线段树分治是一种离线算法,在于把修改挂在线段树的节点上,通过遍历线段树求出每个叶子节点的答案,以减小复杂度。例题P5787二分图题目大意:\(n\)个点......