0
点赞
收藏
分享

微信扫一扫

java集合(Map-List-ArrayList)

南柯Taylor 2021-09-21 阅读 120
java日常

1.(1)List,Set都是继承自Collection接口,Map则不是

(2)List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set的Object必须定义equals()方法,另外list支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想要的值。)

(3)Set和List对比:

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。

List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

4.Map适合储存键值对的数据

5.线程安全集合类与非线程安全集合类

LinkedList、ArrayList、HashSet是非线程安全的,Vector是线程安全的;

HashMap是非线程安全的,HashTable是线程安全的;

StringBuilder是非线程安全的,StringBuffer是线程安全的。

--------------------------------------------------

2.keySet()返回此映射包含键的set集合,values()返回所有值,entrySet()返回所有映射关系              key-value都可以为null

3.判断是都包含某个元素,constains()方法,其实是重写Object的equals方法,一个元素一个元素比较,只要包含一个true,则返回true。

4.给List排序:java.util.Collection;List<Integer> ls = new ArrayList<Integer>();       Collection.sort(ls);进行排序(Integer类型);

5.4的前提是实现Comparable接口,Comparable和Comparator比较:

Comparable接口-可比较,其实现类要实现compareTo()方法,返回正数表示大,0表示相等

Comparator-比较工具接口,用于定义 临时 定义比较规则,其实现类需要实现compare()方法

6.

1).ArrayList维护着一个对象数组。如果调用new ArrayList()后,它会默认初始一个size=10的数组。

每次add操作都要检查数组容量,如果不够,重新设置一个初始容量1.5倍大小的新数组,然后再把每个元素copy过去。

在数组中间插入或删除,都要移动后面的所有元素。(使用System.arraycopy())

2).LindedList

LinkedList的实现是一个双向链表。每个节点除含有元素外,还包含向前,向后的指针。

新建一个LinkedList,生成一个头节点(header,就是一个头指针),它的元素为null。

3).比较ArrayList和LinkedList的结构,就可以得出:

——1.ArrayList的remove和add(index, Object)操作代价高,需要移动后面的每个元素。

——2.LinkedList的get(index)操作代价高,它要先循环遍历list,找到Object

举报

相关推荐

0 条评论