java面试
文章平均质量分 83
cd
伏加特遇上西柚
犹如烈焰般的伏特加和温柔酸甜的西柚碰撞在一起,将是一种美好的相遇。
展开
-
LinkedList源码分析
List接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现List接口外,LinkedList类还为在列表的开头及结尾getremove和insert元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈队列或双端队列。有序性 : 存入和取出的顺序是一致的元素可以重复 :含有带索引的方法独有特点 : 数据结构是链表,可以作为栈、队列或者双端队列!LinkedList是一个双向的链表结构,双向链表的长相,如下图!原创 2023-03-17 17:28:59 · 936 阅读 · 0 评论 -
ArrayList源码分析
ArrayList集合是Collection和List接口的实现类。底层的数据结构是数组。数据结构特点 : 增删慢,查询快。线程不安全的集合!许多程序员开发的时候,使用集合基本上无脑选取ArrayList!不建议这种用法。单列集合 : 对应与Map集合来说【双列集合】有序性 : 存入的元素和取出的元素是顺序是一样的元素可以重复 : 可以存入两个相同的元素含带索引的方法 : 数组与生俱来含有索引【下角标】原创 2023-03-17 15:48:35 · 717 阅读 · 0 评论 -
HashSet原理
HashSet 实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的 迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。底层结构:哈希表.(数组+链表)数组的长度默认为16,加载因子为0.75首先会先获取元素的哈希值,计算出在数组中应存入的索引判断该索引处是否为null如果是null,直接添加如果不是null,则与链表中所有的元素,通过equals方法进行比较属性值只要有一个相同就不存入,如果都不一样,就存入.原创 2023-03-05 17:36:15 · 737 阅读 · 0 评论 -
LinkedList的原理
LinkedList是通过一个双向链表来实现的,它允许插入所有元素,包括null,它是线程不同步的.如图:从图中可以看出双向链表每个结点除了数据域之外,还有一个前指针和后指针,分别指向前驱结点和后驱结点(如果有前驱和后驱的话,没有指向null),另外,双向链表还有一个first指针和last指针,分别指向头结点和尾节点.1、LinkedList 的底层结构是一个带头/尾指针的双向链表,可以快速的对头/尾节点 进行操作。原创 2023-03-05 17:33:12 · 258 阅读 · 0 评论 -
ArrayList集合底层原理
ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在 内的所有元素。每个 ArrayList 实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。自动增长会带来数据向新数组的重新拷贝,因此,如果可预知数据量的多少,可在构造 ArrayList 时 指定其容量。原创 2023-03-05 17:25:02 · 948 阅读 · 0 评论 -
List接口
List接口介绍有序的 collection(也称为序列)java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。特点:List中元素是有序的List中元素是有索引的允许元素重复【比如存在e1,e2 若e1.equals(e2) 为true,这两个元素依旧可以存入】可以存入对个null的元素List有哪些常见的实现类:List|–ArrayList|–LinkedList|–Vector【不用了】原创 2020-08-05 21:50:10 · 364 阅读 · 0 评论 -
IO的分类
按照流的方向输入流:读取数据,把持久设备的数据读取到内存中输出流:写出数据,把内存中的数据写出到持久设备。按照数据类型分字节流:按照字节对文件进行读或者写的操作。字节可以对任意类型的文件按照字节进行读和写操作,如:视频,图片,word文档,MP3,文本文件等。字符流:按照字符对文本类型的文件进行读和写操作。字符流只能对文本类型的文件进行操作。...原创 2020-07-31 19:56:18 · 215 阅读 · 0 评论 -
String、StringBuffer、StringBuilder的区别
String 类:1、内部维护的char[] 数组长度不可变,为final修饰,String类也是final修饰,不存在扩容。2、字符串拼接,截取,都会生成一个新的对象。频繁操作字符串效率低下,因为每次都会生成新的对象。StringBuffer 类:1、内部维护可变长度char[]。2、线程安全的字符串操作类,大部分方法都采用了Synchronized关键字修改,以此来实现在多线程下的操作字符串的安全性。其toString方法而重新生成的String对象,会共享StringBuffer对象中的t原创 2020-07-25 20:25:11 · 189 阅读 · 0 评论 -
“==“、equals和hashCode有什么区别?
“==”、equals和hashCode有什么区别?“==”:1如果比较的对象是基本数据类型,则比较的数值是否相等;2.如果比较的是引用数据类型,则比较的是对象的地址值是否相等;int a = 5;int b = 5;String s1 = new String("xyz");String s2 = new String("xyz");System.out.println(a == b); // trueSystem.out.println(s1== s2); // false解释:原创 2020-07-25 19:45:55 · 229 阅读 · 0 评论