一、基础篇JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 HotSpot 即时编译器、编译优化 类加载机制 classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(jboss modules、osgi、jigsaw) 虚拟机性能监控与故障处理工...
Java的Map集合 Map集合定义: HashMap定义: 排序的子类:TreeMapMap集合 定义: 储存一组成对的键-值对象,提供key(键)到value(值)的映射(mapping)。 key不要求有序,但不允许重复。value同样不要求有序,但可以重复。 最常见的Map实现类是HashMap,他的储存方式是哈希表,优点是查询指定元素效率高。 Map接口提供了将键映射到集合的对象,一个映射不能包含重复的键.HashMap 定义: HashMap是一个散列表,它存储的内容是键值...
import java.util.ArrayList; import java.util.Iterator; public class arrayList { public static void main( String[] args ) { ArrayList<String> list = new ArrayList<String>(); //存储String类型的元素 list.add("hello "); //添加元素 list.add("my "); list.add("love!"); System.out.println(list); //打印整个集合 System.out.println("...
import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class set { public static void main( String[] args ) { Set list = new HashSet(); list.add("shen"); list.add("weiwei"); list.add("wei"); list.add("liu"); list.add("yan"); System.out.println(list.size()); System.out.println("================...
类简介:/*** 允许key/value为null,HashMap和Hashtable大致相同(除了不同步及允许null),这个类不保证顺序,其实是它不能保证顺序会随时间保持不变。* * Hash table based implementation of the <tt>Map</tt> interface. This* implementation provides all of the optional map operations, and permits* <tt>null</tt> values and the <tt>null</tt> key. (The <tt>HashMap</tt>* class is roughly equivalent to <tt>Hash...
import org.junit.Test;import java.util.HashSet;/*** @Author DaWeiGuo* @Date 2021/2/20 23:04* @Desc: HashSet中的元素具有无重复性,且根据元素的哈希值在内存中进行存放,根据HashSet底层存放原理,当两个对象不同时才会放进集合中,判断两个对象是否相同的依据是:* 先判断两个对象的哈希值是否相等,不相等则予以存放,* 在计算出来的哈希值相等的情况下才会进一步调用equals方法,判断两个对象是否相等,不相等的情况下就...
Map接口 Map接口概述 Map与Collection并列存在。用于保存具有映射关系的数据:key-value Map 中的 key 和 value 都可以是任何引用类型的数据,Map 中的 key 用Set来存放,不允许重复,即同一个 Map 对象所对应的类,须重写hashCode()和equals()方法 常用String类作为Map的“键” key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到 唯一的、确定的 value Map接口的常用实现类:HashMap、TreeMap、LinkedHashMap和Prop...
集合体系图set集合存储的元素是无序的,不可以重复的 HashSet<String> sh = new HashSet<>(); sh.add("a"); sh.add("b"); sh.add("c"); sh.add("c"); System.out.println(sh); ?? HashSet存储自定义对象保证元素唯一性 重写hashCode()和equal()方法 自动生成这两种方法即可 ? HashSet如何保证元素唯一性的原理/* * 为什么是31? * 1,31是质数 * 2,31既不大也不小 * 3,31是2的五次方-1 */ @Override public int hashCode() { fin...
数组存放地址值的内存图数组和集合的区别数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值。 集合只能存储引用数据类型(对象)集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象。数组长度是固定的,不能自动增长。 集合的长度的是可变的,可以根据元素的增加而增长。 数组和集合什么时候用? 如果元素个数是固定的推荐用数组 如果元素个数不是固定的推荐用集合...
转载:https://www.liaoxuefeng.com/wiki/1252599548343744/1265117109276544 我们已经知道,HashMap是一种以空间换时间的映射表,它的实现原理决定了内部的Key是无序的,即遍历HashMap的Key时,其顺序是不可预测的(但每个Key都会遍历一次且仅遍历一次)。 还有一种Map,它在内部会对Key进行排序,这种Map就是SortedMap。注意到SortedMap是接口,它的实现类是TreeMap。┌───┐│Map │└───┘▲┌────┴─────┐│...
概要 上一章,我们学习了Collection的架构。这一章开始,我们对Collection的具体实现类进行讲解;首先,讲解List,而List中ArrayList又最为常用。因此,本章我们讲解ArrayList。先对ArrayList有个整体认识,再学习它的源码,最后再通过例子来学习如何使用它。内容包括:第1部分 ArrayList简介第2部分 ArrayList数据结构第3部分 ArrayList源码解析(基于JDK1.6.0_45)第4部分 ArrayList遍历方式第5部分 toArray()异常第6部分 ArrayLis...
原文作者:不知道取啥昵称 原文地址:Java Set集合去重机制关于java里面的集合,大家经常利用到Set集合没有重复数据的特性,来进行数据的去重,那么去重的原理是怎么样的呢?最近面试了几个人,其间有聊到集合的东西,所以就顺便问了一下这个问题,但是都是只知道这么用,而没有去看看底层代码的去重原理(而恰恰有可能这些基础原理会被用来设计其他一些场景实现),所以在此文章记录一下,希望能帮助到一些人。下面是Set集合的类图:...
一、概述 JAVA中有许多的集合,常用的有List,Set,Queue,Map。 其中List,Set,Queue都是Collection(集合),其每个元素都是单独的一个对象,如List<String>,Set<Integer>等,String和Integer就是单独的一个对象。 而Map是一种图,其每个元素都是两个对象的一一对应,如Map<Integer, String>中的Integer是键 (key),String是这个键所对应的值(value)。每个元素都是一对Integer和String。 ...
文章目录 一、前言二、集合概述三、Collection接口中的常用方法四、Iterator迭代器1.使用迭代器遍历集合元素2.foreach循环遍历(增强for循环) 五、List接口1.List接口概述2.实现类的底层实现原理ArrayListLinkedListVector 3.List中常用方法 六、Set接口1.Set接口概述2.HashSet中元素添加过程3.关于hashCode和equals方法重写重写 hashCode()基本原则重写 equals() 基本原则 4.LinkedHashSet的使用5.TreeSet类自然排序定制排序七、...
Java集合概念和使用大全集(一些集合类list set map的介绍、使用和源码剖析),内容来自java尚硅谷(课程链接https://www.bilibili.com/video/BV1Kb411W75N) 通过对集合的学习,我们要达到: 1.选择合适的集合类去实现数据的保存,调用其内部的相关方法。 2.不同的集合类底层的数据结构为何?如何实现数据的操作的:增删改查等。 对应于不同的数据种类,采用不同的集合类,能够针对性的实现数据的存储和使用。 首先说到数据的存...