学习博客:http://www.cnblogs.com/skywang12345/p/3323085.html

https://blog.csdn.net/vegetable_bird_001/article/details/50975884

https://blog.csdn.net/vegetable_bird_001/article/details/50975884

容器主要分为Collection和Map两个大分类

一、Collection接口

Collection接口主要包括List(有序,可重复)和Set(无序,不可重复)接口。

List接口的实现类有:ArrayList、LinkedList、Vector。

ArrayList基于动态数组,查询快,增加和删除慢。

LinkedList基于链表,查询慢,增加和删除快。

LinkedLise常用方法:

void addFirst(E e):在链表头部插入一个元素;

addLast(E e):在链表尾部添加一个元素;

E removeFirst():移除链表中第一个元素,与remove类似;

E removeLast():移除链表中最后一个元素;

E getFirst():获取第一个元素;

E getLast():获取第二个元素;

void push(E e):与addFirst一样,实际上它就是addFirst;
E pop():与removeFirst一样,实际上它就是removeFirst;

E poll():查询并移除第一个元素;

E peek():获取第一个元素,但是不移除;
E peekFirst():获取第一个元素,但是不移除;

E peekLast():获取最后一个元素,但是不移除;

boolean offer(E e):在链表尾部插入一个元素;
boolean offerFirst(E e):与addFirst一样,实际上它就是addFirst;

boolean offerLast(E e):与addLast一样,实际上它就是addLast;

Vector基于动态数组,与ArrayList的不同是,Vector是线程安全的,ArrayList是线程不安全的,Vector的性能比ArrayList低。

Set接口的实现类有:HashSet、TreeSet。没有get方法,完全实现Collection中的抽象方法,没有另外的方法。

HashSet基于哈希码存储和查询数据,依赖于HashMap实现。

TreeSet基于红黑树结构存储数据,有一定的顺序,依赖于TreeMap实现。

TreeSet支持两种排序方式:自然排序和客户化排序。

自然排序:在JDK中,有一部分类实现了Comparable接口,如Integer,Double和String等,Comparable接口有一个compareTo(Object o)方法,它返回整数类型,对于表达式x.compareTo(y),如果返回值为0,表示x和y相等,如果返回值大于0,表示x大于y,如果小于0,表示x小于y。TreeSet调用对象的compareTo方法与集合中的对象作比较,然后进行升序排序,这种方式叫自然排序。

Person类实现Comparable接口,按照年龄排序,年龄相等,按照名字排序。

JAVA容器学习

JAVA容器学习

结果

JAVA容器学习

客户化排序: java.util.Comparator接口用于指定具体的排序方式,它有个compare(Object obj1,Object obj2),用于比较两个对象的大小,调用构造方法TreeSet(Comparator comparator),集合存储对象的时候按照Comparator接口实现的比较方法进行排序。当数据类实现了Comparable,同时Set构造参数实现了Comapator,此时按照Comparator中的排序方法进行排序!

JAVA容器学习

JAVA容器学习

结果:

JAVA容器学习

二、Map接口

Map接口存放键值对,实现类有:HashMap,TreeMap。

HashMap基于哈希表存放键值。

TreeMap基于红黑树结构存储数据,是有序的。

另外一种存放键值对的容器,HashTable线程安全的,HashMap线程不安全的。

Map接口分别提供了用于返回 键集、值集或键-值映射关系集。

1、entrySet()用于返回键-值集的Set集合。

2、keySet()用于返回键集的Set集合 。

3、values()用户返回值集的Collection集合。

因为Map中不能包含重复的键;每个键最多只能映射到一个值。所以,键-值集、键集都是Set,值集时Collection。

List遍历方法:

JAVA容器学习

JAVA容器学习
Map的常用方法:

V put(K Key,V Value)方法,如果key不重复,返回null,如果key重复,覆盖之前的value,返回之前的value值。

V get(K Key )返回key值对应的value值。

V remove(K Key)方法,返回删除的key值,对应的value值。

boolean isEmpty()

boolean containsKey(Object key)

boolean containsValue(Object value)

int size()

Map的遍历方法

1、使用keySet()方法,返回Set集合,集合内存放key对象,遍历Set集合,通过Map的get(K Key)方法获取value值。

    JAVA容器学习

2、使用values()方法,遍历value值,不能获得key值。

JAVA容器学习

3、使用entrySet方法,返回Set<Map.EntrySet<K Key,V Value>>集合,将键值对的映射关系封装到Map.EntrySet对象中,然后放入Set集合中,遍历Set集合,使用Map.EntrySet对象的getKey()和getValue()方法获取键和值。

JAVA容器学习





相关文章: