java 集合类基础回顾

1.java集合类里面最基本的接口有:

a.collection: 代表一组对象,每一个对象都有它的子元素。

b.set:不包含重复元素的collection。

c.list:有顺序的collection,并且包含重复元素。

d.map:可以把建(key)映射到值(value)的对象,建不能重复。


2.迭代器(iterator)

iterator接口提供了很多对集合元素进行迭代的方法。每一个集合元素类都包含了可以返回迭代器实例的迭代方法。迭代器可以在迭代过程中删除底层集合的元素。


3.hashmap的工作原理

HashMap是以键值(key-value)的形式储存元素的。HashMap需要一个hash函数,它是有hashCode(),equals()方法来向集合添加和检索元素,当调用put()方法时,HashMap会计算key的hash值,然后把键值对 储存在合适的索引上。如果key已经存在,它所对应的value的值会被更新。


4.hashmap 和 hashtable 的区别

HashMap允许键值是null,但是HashTable不允许。 HashMap 是非同步的,而HashTable 是同步的。


5.array和ArrayList 的区别?

a. array可以包含基本类型和对象类型,但是ArrayList只能包含对象类型。

b.array的大小是固定的,ArrayList大小是动态变化的。


6.ArrayList 和 LinkedList 的区别

a.ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。LinkedList 是以元素列表的形式储存它的数据,每一个数据都和它的前一个和后一个元素链接在一起,它可以以O(n)时间复杂度对元素进行访问。

b.查找速度的话ArrayList快,增删速度的话LinkedList更快。

c.LinkedList比ArrayList更占内存,因为每一个节点需要存两个引用值,一个指向前一个元素,一个指向后一个元素。


7.comparable 和comparator接口的区别

Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。

Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true。



8.HashSet 和 TreeSet的区别

HashSet是一个hash表实现的,所以它是无序的。add(),remove(),contains()方法的时间复杂度是O(1).相反,TreeSet是由输来实现的,所以它是有序的。因此add(),remove(),contains()方法的时间复杂度是O(log n).



下次会对java的GC机制的基础进行回顾。

猜你喜欢

转载自blog.csdn.net/puzimengya/article/details/80276128