Java Collections

参考
菜鸟

Outline

集合接口
在这里插入图片描述

  • List
  • Set
  • Queue
  • Map

Why using interface instead of class!!!
主要还是方便改

Method from java.util.Collection

addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray

迭代器

不关心容器的通用方法,工作是遍历并选择容器中的对象
java中迭代器只能单向移动

List<Integer> l = new ArrayList<Integer>();
Iterator<Integer> it = l.interator(); // 容器返回一个Iterator对象,指向第一个元素前面
while(it.hasNext()) {
	Integer i = it.next();
	it.remove();
}

Methods

所有collection都包含的方法

  • addall()
  • add()
  • 打印不需要toString(),可以直接打印

List

ArrayList随机访问更快,但是插入删除较慢,LinkedList插入删除较快

  • ArrayList
  • LinkedList
  • Vector: 线程安全

ArrayList Methods

https://mp.csdn.net/mdeditor/88841727

  • size()
  • add()
  • replace()
  • remove()
  • get()
  • subList()

LinkedList

List<Integer> l = new LinkedList<Integer>(); 有些LinkedList的方法就用不了了,比如addFirst()

  • 这种到底应该怎么用??

  • 可以用来实现Stack 和 Queue

  • 常用方法:

    • addFirst()插在首部, add()==addLast(),都插在尾部

Stack

可以自己用LinkedList实现一个,想要使用自己的stack类,就要在创建实例的时候完整的指定包名,否则会与java.util中的Stack发生冲突
java.util.Stack 也可以直接用

Queue

Throws exceptionReturns special value
Insertadd(e)offer(e) false
Removeremove()poll() null
Examineelement()peek() null
  • Queue只是接口,所以常用Queue<> q = new LinkedList<>();
  • 其他implementing class 包括AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList, LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, SynchronousQueue

Set

继承自Collections接口,Set也是接口

  • HashSet(散列/哈希)
  • TreeSet(红黑树,平衡查找树)是SortedSet,可以通过自定义Comparable接口的compareTo方法自定义排序方式
  • LinkedHashSet(散列/哈希)

Map

有一大堆

  • HashMap: 它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的
  • HashTable: 与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。
    LinkedHashMap
  • TreeMap: 能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。
Map<String, String> m = new HashMap<String, String>();
m.put(key, value);
m.get(key);
m.remove(key);
m.clear();
m.containsKey();
m.keySet();
// for each 或者interator遍历
for(Iterator it=m.iterator();it.hasNext();){
	it.next() 
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值