Java的集合框架

Java的集合框架主要分为两个部分,第一种是集合(Colletion)另外是一种是Map。
1.Collection

主要用来存储一个元素集合,Colletion接口有三个子类型,分别是List,Set和Queue.
下面是一些抽象类,类如AbsetractList。实现这些抽象类的具体类,常见的有ArrayList,
LinkedList,HashSet,TableSet,以及LinkedHashSet.

2.Map

主要存储Key-Value pair.同Collection,但其下面的抽象类和具体类不同, 主要有HashMap,TreeMap,
HashTable.

接口:代表集合的抽象数据类型,之所以定义了多个接口,是为了以不同的方式操作数据对象。
实现类:集合接口的具体实现.
算法:实现接口的对象里面一些有用的方法,例如排序和搜索,这些算法被称为多态,相同的方法在不同的接口上有不同的实现.Collections

Set——AbstractSet——HashSet
Set——SortedSet——TreeSet

Java不提供直接继承Collection的类,只能继续于子接口,

List接口是一个有序的Collection,可以控制元素插入的位置,方便索引,有序的插入。检索效率高,但插入和删除会引起其他元素位置改变,效率低
Set接口是一个无序的Collection,同时不保存重复元素,检索效率低,但删除和插入效率高,不会引起其他元素位置的改变。
SortedSet继承于Set,保证有序

Map提供Key到Value的映射
SortedMap继承于Map,保持Key升序排列

一般情况下我们使用for和增强for循环来遍历集合框架,但我们也可以使用iterator来进行遍历,迭代器实现了iterator接口的一个对象。
Iterator<>ite = list.iterator();
while(iterator.hasNext())System.out.println(iterator.next());
遍历Map的情况有所不同

1.通过Key可以对Map进行遍历:

 for (String key : map.keySet()) {System.out.println("key= "+ key + " and value= " + map.get(key));}

2 通过对Value进行遍历,但无法访问Key值

for (String v : map.values()) {System.out.println("value= " + v);}
ArrayList实现类的具体方法./

1.add(), addAll(int index, Collection c), remove(), clear(), set( , ), isEmpty. 最常用的方法, toString(),toArray(),
2.不太常用的方法
replaceAll(e->e*2) || replaceAll(e->e.toUppserCase())
Contains();

LinkedList

1 可以分为双向链表和单项链表
包含两个或三个部分,主要是自己节点的信息以及下一节点的地址(如果是双向链表会有上一个节点的地址)

2 实现了Deque和Queue的接口,可当作队列来使用。

常用的方法:
removeLast(); remove (int index); getFirst(); getLast();
indexOf(Object o); lastindexOf(Object o);
peek(); peekLast();

HashSet

HashSet基于HashMap来实现的,不可以有重复的值,可以有Null值。HashSet中元素是无序的,同时不是线程安全的。

常用的API
contains(Obejct o); add(); remove(Object o);

HashMap

HashMap是一个散列表,存储着Key和Value的映射。存储元素是无序的,不支持线程的同步。
常用的方法:
put(); get(); remove(key); clear(); isEmpty(); containsKey(or Value)();
replace(key, oldValue, Value) 可以选择带旧值或者不带。
getOrDefault(key, default);
compute(key, BiFunction)

map.compute(key, (key, value) -> value - value*10%);
Java Iterator

Iterator 是一种访问集合的方法,可用于迭代ArrayList和Map等集合
1.Iterator的声明:

Iterator <> it = map.iterator();

常用的方法:
iterator.hasNext();
iterator.next();
iterator.remove();

Java Object

Object 是所有类的父类。所有的子类都可以使用Object类的方法,下面详细介绍Object类的各种方法:

clone()
是一种浅拷贝,只会拷贝引用对象的地址,而不会重新分配引用对象的内存;而对应的深拷贝就会将引用对象的内存重新分配。

(类型可强制转换)obj2 = () obj1.clone();

equals()
判断两个对象的引用是否指向同一个对象,即比较2个对象的内存地址是否相等。
如果重写了equals方法,就一定要重写HashCode方法;
在Java中,对对象的存储采用了存在哈希表的处理方法,根据对象的地址转换返回的一个哈希值。

哈希表的结构:一个长度为N的数组加N个链表{
当计算出一个对象的哈希值之后,对哈希表的长度进行取余,此时不同的哈希值得到的插入数组的index可能是相同的,此时我们就应该用equals()方法进行判断,不同的话就在链表中进行插入}

两个对象的HashCode不同,则equals()方法一定返回false;
两个对象的HashCode相同,根据equals方法返回值来确定是否为true或者flase;

当我们判断两个对象的引用是否相同时,我们需要先用HashCode方法进行判断,然后再用equals方法进行判断。如果我们只重写了equals方法的话,可能会导致HashCode不同的两个对象的引用,判断得到的结果是相同的。

我们使用HashMap的目的是获取唯一映射。
如果我们将HashMap中的key值为自己写的对象,此时我们必须重写HashCode和Equals方法。如果不这样做,我们就无法实现唯一映射。

分为两个方面:
1.只重写了的HashCode而没有重写Equals
此时就要应用链表的知识,我们得到HashCode确实是相同的,但是我们还要经过equals方法进行比较,我们知道,如果不定义equals方法,默认为Object的equals方法,此时比较的是两个对象的引用,即地址。所以我们无法实现想要的功能。必须要将equals方法写为只要比较两个对象的值相同就可以。
2.只重写了的equals方法没重写hashcode
值相同的两个对象的hashCode不相同,无法实现唯一映射。

对于HashMap的查找来说,效率很高。

getClass()
object.getClass();可以返回一个对象运行时对象的类

notify()
用来唤醒一个再次对象监视器上的线程,只能被作为对象监视器的所有者来调用;
一个线程想要成为对象监视器的所有者,有三种方法:
执行对象的同步实例方法
使用 synchronized 内置锁
对于 Class 类型的对象,执行同步静态方法

wait

toString

Java的常用集合框架相关推荐

  1. Thinking in java基础之集合框架

    Thinking in java基础之集合框架 大家都知道我的习惯,先上图说话. 集合简介(容器) 把具有相同性质的一类东西,汇聚成一个整体,就可以称为集合,例如这里有20个苹果,我们把每一个苹果当成 ...

  2. java把map值放入vector_Thinking in java基础之集合框架

    Thinking in java基础之集合框架 大家都知道我的习惯,先上图说话. 集合简介(容器) 把具有相同性质的一类东西,汇聚成一个整体,就可以称为集合,例如这里有20个苹果,我们把每一个苹果当成 ...

  3. Java的并发集合框架

    文章目录 一.并发集合框架 1. 简介 2. 接口Iterable 2. 接口Collection 3. 接口List 4. 接口Set 5. 接口Queue 6. Deque 二.非阻塞队列 1. ...

  4. java程序中集合框架有哪些

    作者:代码界的小白 链接:Java中集合在面试中的高频考点_技术交流_牛客网 来源:牛客网 本章节主要分享一些Java中的集合在面试中常问的高频问题,这里给出的是相对比较简略的答案,不过针对面试的回答 ...

  5. Set精讲(Java)·算法常用集合处理方法

    Set精讲(Java)·算法常用集合处理方法 Set概述 Set集合类似于一个罐子,程序可以依次把多个对象"丢进"Set集合,而Set集合通常不能记住元素的添加顺序.实际上Set就 ...

  6. java中的集合框架_JAVA中的集合框架(上)List

    第一节 JAVA中的集合框架概述 集合的概念,现实生活中:很多事物凑在一起就是一个集合:数学中的集合:具有相同属性事物的总体:JAVA中的集合:是一种工具类,就像是容器,储存任意数量的具有共同属性的对 ...

  7. Java学习---day14_集合框架03

    Java学习-day14_集合框架03 Set集合 Set集合中,没有下标的概念 Set集合,是一个去重复的集合.在Set集合中不会添加重复的元素的 在向一个Set集合中添加元素的时候,会先判断这个元 ...

  8. 第48节:Java当中的集合框架

    Java当中的集合框架 01 在我们班里有50位同学,就有50位对象. // 简书作者:达叔小生 Student[] stus = new Student[20]; 结果来了一位插班生,该同学因为觉得 ...

  9. Java SE day14_集合框架4

    Java SE day14_集合框架4 Map集合的特点: Map集合的功能概述 ==HashMap中嵌套HashMap== 1:Hashtable和HashMap的区别? Collections集合 ...

  10. Java高级特性 集合框架、泛型和Collection(一)(第二十三天)

    集合的使用: 如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象--可以使用Java集合框架 java集合框架: 在java中数据结构是以某种形式将数据组织在一起的集合.他们不仅存储数据 ...

最新文章

  1. 数据库db_files参数增大怎么办
  2. 关于计算机应用技术的周记,计算机应用技术专业实习周记范文
  3. zuulfilter添加例外_SpringCloud之Zuul 自定义filter
  4. think-in-java(9)接口
  5. plist中数据存取
  6. 概率算法/拉斯维加斯 蒙特卡洛 舍伍德算法
  7. 世界各国1960年到2020年gdp数据抓取
  8. 电磁场与电磁波-场论基础
  9. 显控触摸屏编程手册_深圳显控AKWORKSHOP触摸屏与ALLENBRADLEY通讯手册.pdf
  10. 基于PIC单片机USB接口的数据采集系统设计
  11. 我们梳理了国内外逾80家公司,发现6大关键趋势 | 36氪眼健康行业报告
  12. 平面设计美学的意义是什么?
  13. 华为手机隐藏的3大功能,现在才知道,怪不得别人手机这么好用
  14. Set Similarity
  15. iOS设备管理器有人推荐iTunes,有人推荐iMazing,到底如何选择
  16. RGB、HSV和Lab颜色空间
  17. Google Spanner原理:地球上最大的单一数据库
  18. 项目一 Windows Server 2012 R2服务器安装与配置
  19. iClap的名字是怎么来的,clap是有什么特殊的意义么?
  20. FPGA学习之串口发送程序设计(来自小梅哥的教程学习者)

热门文章

  1. 网站地图在线生成html,如何制作网站地图(sitemap.html和sitemap.xml)?
  2. 优雅降级实现IE8的transform平移属性
  3. 如何获取常用汉字(GB2312)
  4. matlab 三阶段dea模型,三阶段DEA模型SFA二阶段剔除过程
  5. 英特尔固态硬盘测试软件,英特尔固态硬盘工具(Intel SSD Datacenter Tool)
  6. Sublime Text3配置LaTeX环境及使用Sumatra PDF作为阅读器——亲测可用
  7. 蜗牛星际ABCD款,这几款的区别你知道吗?
  8. MYSQL误删数据恢复
  9. 轻松学习Linux之入门篇
  10. SpringBoot启动报错(一篇教你如何处理mapper绑定问题) BindingException: Invalid bound statement (not found)