java面试题笔记

JAVA的跨平台原理

对于不同的系统,有相对应的不同的java虚拟机(JVM),JVM会屏蔽不同系统指令的差异,对外提供统一的接口(java API),以实现跨平台。

搭建java开发环境的步骤

java开发环境需要什么

集合

java面试题笔记

集合引入的原因

数组的弊端:

  1. 只可以存储同一种类型的数据;
  2. 一旦定义以后,长度不可改变

集合的大分类

集合的分类有两种:

  1. Collection:只存储值value
  2. Map:存储键值对key-value

Collection

Collection只存储值value,这种存储方式的集合有两类:

  1. List:有序的,可重复的
  2. Set:无序的,不可重复的
List

List存储的数据是有序的,可重复的,派生了两种子类:

  1. ArraysList:底层实现是数组
  2. LinkedList:底层实现是链表
ArraysList

底层实现是数组,查找快,插入和删除效率较低

LinkedList

底层实现是链表,查找慢,插入和删除效率较高

数组和链表的区别:
  1. 存储位置的不同:数组相邻位置的元素在物理空间上也是相邻的,而链表不一定(可能相邻,也可能不相邻);
  2. 存储空间的不同:数组要求一片连续的空间来存储每一个元素,可能会造成空间的浪费,而链表不一定要连续的空间,可以利用零碎的空间;
  3. 在操作的效率上:数组查找特定的元素效率比较高(因为可能根据下标索引直接查找到元素),但插入和删除操作效率比较低(因为需要对元素挨个进行移动);而链表的插入和删除操作效率比较高(只需要更改next空间的指向即可),查找效率低(因为需要从第一个元素开始一个一个找到目标元素)
Set

Set存储的数据是无序的,不可重复的。常用的子类有:

  1. HashSet:无序的
  2. LinkedHashSet:有序的,根据插入的顺序排序

Map

Map存储数据是以键值对key-value形式来存储的。其中key值不可以重复。
Map常用的子类有:

  1. HashMap
  2. HashTable
  3. CurrentHahMap
HashMap
  1. HashMap可以把null作为key值和value值
  2. HashMap是线程不安全的,效率高
HashTable
  1. HashTable不可以把null作为key值和value值
  2. HashTable是线程安全的,效率低
CurrentHashMap

CurrentHashMap既保证了线程安全,又保证了效率

相关文章: