JAVA容器学习

 

 

 

 

 

 

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

结果:

 

二、Map接口

 

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

 

HashMap基于哈希表存放键值。

 

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

 

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

 

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

 

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

 

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

 

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

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

List遍历方法:



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值。

   

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

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

 

 





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值