黑马程序员——高新技术---Java基础-集合特点和数据结构总结

来源:互联网 发布:js给dom添加属性 编辑:程序博客网 时间:2024/05/07 05:28

-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 


Collection接口:

|---List有序,可以存储重复元素

|----ArrayList数组实现,线程不安全,效率高

 

|----Vector 数组实现,线程安全,效率低

 

|----LinkedList链表实现,线程不安全,效率高

 

|---Set无序,不能存储重复元素

|---HashSet哈希表实现,线程不安全,效率高

保证唯一性:hashcode()equals()方法

 

|--LinkedHashSet链表,哈希表实现,线程不安全,效率高

 

|----TreeSet 树实现,线程不安全,效率高

对元素排序的,要排序,就要比较,比较方式:

1,自然排序:我们的类要实现Comparable接口,重写comparaTo()方法。

2,我们的类不需要实现任何接口,自定义一个比较器,实现Comparator接口,重写compare()方法

实例化TreeSet时,传递自定义比较器对象。

 

Map接口:双列集合,使用键值对存储

|----HashMap哈希表实现,线程不安全,效率高

保证键的唯一性,同Hashset

 

|---TreeMap树实现,线程不安全,效率高。

对键的排序,同TreeSet

 

|----LinkedHashMap链表、哈希表实现,线程不安全的,效率高。

 

|----Hashtable哈希表实现,线程安全,效率低。

 

数据结构:

1,数组:查询快。增删慢

2,链表:查询慢,增删快

3,栈:后进先出

4,队列:先进先出

5,哈希表:综合了数组和链表的优点,查询、增删都很快

6,第一个存储的作为根节点,再存储元素时,要跟已存元素比较,比已存元素大,存在当前节点的右侧,比已存元素小,存在当前节点的左侧。如果相等则不存。

 

集合的选择:(如何选择使用哪种集合?)

 

需要单列还是双列?

单列:Colllection

有序:List

经常查询,但不经常修改:ArrayList (单线程,快)Vector(多线程,慢)

经常修改元素的数量:LinkedList

无序:Set

是否需要排序?

不要排序:HashSet(无序) LinkedHashSet(有序)

需要排序:TreeSet

双列:Map

不要排序:HashMap,LinkedHashMap

排序:TreeMap

 

 

各种集合的遍历方式:

Collection

1,toArray()

2,迭代器 iterator

3,增强for

|---List

4,使用Collectionsize()Listget(int indec)方法使用普通for循环

List特有的迭代器ListIterator

|----Set

()

 

Map

   1,KeySet()-->遍历Set()

   2,entrySet()-->遍历Set<Map.Entry>

 

普通for循环和增强for循环的区别:

增强for循环没有普通循环变量


------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

0 0