黑马程序员-java集合框架2

来源:互联网 发布:港股股票为啥50万 知乎 编辑:程序博客网 时间:2024/06/03 02:26

------- android培训java培训、期待与您交流! ----------

List接口

List接口是Collection子接口;List是有序的集合,集合中的每个元素都有对应的顺序序列。List集合可使用重复元素,通过索引来访问指定位置的集合元素(顺序索引从0开始),List集合默认按元素的添加顺序设置元素的索引,比如第一个元素的索引就是0,好似数组。

List作为Collection子接口当然拥有其所有方法,同时也有自己的方法:

增:void add(int index,E e);将元素e添加到List集合中的index处;

boolean addAll(int index,Collection c)

删:E remove(int index)

改:E set(int index,E e)用指定的元素替代此列表中指定位置上的元素 返回:以前位于该指定位置上的元素

查:E get(int index)

int indexOf(Object o)

int lastIndexOf(Object o)

List<E> subList(int formIndex,int toIndex)


ListIterator

Iterator的子接口,专门用于操作List集合的输出;

List自己还有一个listIterator()方法,该方法返回ListIterator对象,ListIterator继承了Iterator接口,提供了专门操作List的方法。

在Iterator上额外增加的方法:

支持双向输出:
boolean hasPrevious():返回该迭代器关联集合是否还有伤一个元素;

Object previtous():返回该迭代器的上一个元素;

List接口中常用类:

Vector:线程安全,但速度慢,已被ArrayList替代

ArrayList:线程安全,查询速度快。

LinkedList:链表结构,增删速度快。取出List集合中元素的方式:

get(int index):通过脚标获取元素。

iterator():通过迭代方法获取迭代器对象。

ArrayList和Vector类都是基于数组实现的List类,Vector比较古老,被ArrayList取代了

{ArrsyList是线程不安全的,而Vector是线程安全的,但是即使这样,也不推荐使用Vector,因为Collections有方法可以得到线程安全的ArrayList对象;collections类:static List synchronizedList(List list)返回指定列表支持的(线程安全的)同步列表。}

Queqe接口

继承Collection接口

模拟队列:先进先出

void add(Object e):将e插入到队列尾部

E element()获取队列头部的元素

boolean offer(E e)将e插入到队列的尾部,当使用有容量限制的队列时,此方法比add(E e)方法更好

E peek():获取队列头部的元素。如果此双端队列为空,则返回null

E poll():获取并删除队列头部的元素。如果此双端队列为空,则返回null。

E remove():获取并删除队列头部的元素。

LinkedList 

LinkedList实现了Deque接口,而Deque是Queue的子接口

Deque自定义方法:

void addFirst(E e)把元素插入到该双向队列的开头;

void addLast(E e)把该元素插入到该双向队列的末尾;

E getFirst():获取但不删除队列第一个元素

E getLast():获取但不删除队列最后一个元素

boolean offerFirst(E e)将指定的元素插入到该双向队列的开头

boolean offerLast(E e)将指定元素插入到双向队列的末尾

E removeFirst() 删除第一个元素

E removeLast()删除最后一个元素

E peekFirst()获取但不删除队列第一个元素,如果队列为null,返回null

E peekLast()获取但不删除队列最后一个元素,如队列为null,返回null

E pollFirst()获取并删除队列第一个元素,如队列为null,返回null

E pollLast()获取并删除队列最后一个元素,如队列为null,返回null


Map 映射关系,也有人称为字典,Map集合里存在两组值,一组是key,一组是value。Map里的key不允许重复。通过key总能找到唯一的value与之对应。

Map里的key集存储方式和对应的Set集合中的元素存储方式一致

Map.Entry是Map接口的内部接口,专门用来保存key-value内容

K getKey();返回Entry里包含的key值

V getValue();返回Entry里包含的value值

V setValue(V value)设置Entry里包含的Value值,并返回新设置的value值;


Map集合的输出

Map集合本身不能直接为Iterator实例化

方法一:1.通过entrySet方法变成Set对象

2.通过调用Set的Iterator方法,此时每个Iterator对象是Map.Entry对象

3.对Map.Entry分离出key-value

方法二:1.通过Map集合方法keySet得到key的Set集合

2.调用Set的Iterator方法,此时每个Iterator对象迭代出的是key值

3.通过Map的get(Object key)得到value值

Map集合常用类:

Hashtable:线程安全,速度,不允许存放null键,null值,已被HashMap替代,无序存放。

HashMap:线程不安全,速度快,允许存放null键,null值。类中的key都属于无序存放的,底层数据结构是哈希表数据结构。

HashMap线程不安全,在多线程中也推荐使用,可以通过collections类中

public static Map synchronizedMap(Map m)来返回线程同步的映射.

TreeMap:对key进行排序,底层数据结构是二叉树,key不能为null,value可以是null

TreeMap对key的排序方式:

1.自然排序

2.比较器

TreeMap判断两个key元素是否相等标准:

compareTo方法或compare方法返回;



原创粉丝点击