文章标题

来源:互联网 发布:剑灵超美龙女捏脸数据 编辑:程序博客网 时间:2024/05/29 11:43

1.Java的HashMap是如何工作的?

HashMap是一个针对数据结构的键值,每个键都会有相应的值,关键是识别这样的值。

HashMap 基于 hashing 原理,我们通过 put ()和 get ()方法储存和获取对象。当我们将键值对传递给 put ()方法时,它调用键对象的 hashCode ()方法来计算 hashcode,让后找到 bucket 位置来储存值对象。当获取对象时,通过键对象的 equals ()方法找到正确的键值对,然后返回值对象。HashMap 使用 LinkedList 来解决碰撞问题,当发生碰撞了,对象将会储存在 LinkedList 的下一个节点中。 HashMap 在每个 LinkedList 节点中储存键值对对象。

2.哪一个List实现了最快插入?

LinkedList和ArrayList是另个不同变量列表的实现。ArrayList的优势在于动态的增长数组,非常适合初始时总长度未知的情况下使用。LinkedList的优势在于在中间位置插入和删除操作,速度是最快的。

LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。

ArrayList实现了可变大小的数组。它允许所有元素,包括null。 每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。

3.Iterator和ListIterator的区别

●ListIterator有add()方法,可以向List中添加对象,而Iterator不能。
●ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。

●ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。
●都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。

4.Hashmap如何同步?

当我们需要一个同步的HashMap时,有两种选择:

●使用Collections.synchronizedMap(..)来同步HashMap。
●使用ConcurrentHashMap的

这两个选项之间的首选是使用ConcurrentHashMap,这是因为我们不需要锁定整个对象,以及通过ConcurrentHashMap分区地图来获得锁。

5.IdentityHashMap和HashMap的区别

IdentityHashMap是Map接口的实现。不同于HashMap的,这里采用参考平等。

●在HashMap中如果两个元素是相等的,则key1.equals(key2)

●在IdentityHashMap中如果两个元素是相等的,则key1 == key2

6.为什么Map接口不继承Collection 接口?

· Set 是无序集合,并且不允许重复的元素

· List 是有序的集合,并且允许重复的元素

· 而Map 是键值对

· 它被视为是键的set 和值的 set 的组合

· Map 被设计为键值对的集合,所以不需要继承 Collection 接口

7.HashMap和Hashtable之间的区别?

· 同步或线程安全

· Null 键和 Null 值

· 迭代值

· 默认容量大小

8.如何对Object的list排序?

· 对objects 数组进行排序,我们可以用 Arrays.sort() 方法

· 如果要对objects 的集合进行排序,需要使用 Collections.sort() 方法

9.Java 中 Set 与 List 有什么不同?

· Set 是一个不允许重复元素存在的集合

· Set 没有索引

· Set 仅仅允许一个 null 值

· Set 有类: HashSet 、 LinkedHashMap 、 TreeSet

· List 有索引

· List 允许 N 个 null 值

· List 可以按插入顺序显示

· List 有类: Vector 、 ArrayList 、 LinkedList

10.arraylist 与 vector 的区别?

· Vector 在 Java 的第一个版本就引入了,也就是说 vector 是一个合法规范的类

· ArrayList 在 Java1.2 版本引入的,是 Java 集合框架的组成部分

· Vector 是同步的

· ArrayList 是不同步的

11.arraylist 与 vector 的区别?

· Vector 在 Java 的第一个版本就引入了,也就是说 vector 是一个合法规范的类

· ArrayList 在 Java1.2 版本引入的,是 Java 集合框架的组成部分

· Vector 是同步的

· ArrayList 是不同步的

12.什么类实现了List接口?

· ArrayList

· LinkedList

· Vector

13.什么类实现了Set接口?

· HashSet

· LinkedHashSet

· TreeSet

14.如何保证一个集合线程安全?

· Vector, Hashtable, Properties 和 Stack 都是同步的类,所以它们都线程安全的,可以被使用在多线程环境中

· 使用Collections.synchronizedList(list)) 方法,可以保证 list 类是线程安全的

· 使用java.util.Collections.synchronizedSet() 方法可以保证 set 类是线程安全的

15.是否可以往 TreeSet 或者 HashSet 中添加 null 元素?

· 可以往 hashset 中添加一个 null

· TreeSet 也允许一个 null 值

16.解释下Collection的接口继承关系?

17.Iterator符合哪个设计模式?

· Iterator 设计模式

18.HashSet 实现了哪个数据结构?

· HashSet 内部实现了 hashmap

19.为什么 Collection 不能继承 Cloneable 和 Serializable?

· List 和 Set 唯一继承 Collection 接口

· SortedMap 继承了 Map 接口

20.hashCode() 和 equals() 方法的重要性?如何在Java中使用它们?

· hashCode() 和 equals() 方法定义在 “object” 类中

· 如果equals() 方法在比较 2 个对象时返回 true ,那么 hashCode() 的返回值必须得一样

21.array 和 arraylist 的区别?

· Array 类似 object 集合类型,大小固定

· Arraylist 是同质和异质元素的集合

22.什么是 Properties 类?

· Properties 是 Hashtable 的子类。它被用于维护值的 list ,其中它们的键、值都是 String 类型

原创粉丝点击