Java容器

容器、持有对象、集合类、Collection;基本类型:List、Set、Queue和Map

与容器密切相关的是泛型。建议看源码

 

数组变容器

//数组变容器
public static <T> List<T> Arrays.asList(T... a)
public static <T> boolean Collections.addAll(Collection<? super T> c, T... elements)
//所有的容器都重写了toString方法 会打印出含有的元素
public String toString(){}

List 列表--有顺序

  1. ArrayList:随机访问速度快,插入删除慢。
  2. LinkedList:链表--插入和删除比ArrayList快
//Collections方法
//使用默认随机源对指定列表进行置换。所有置换发生的可能性都是大致相等的
public static void shuffle(List<?> list)
//使用指定的随机源对指定列表进行置换。所有置换发生的可能性都是相等的,假定随机源是公平的
public static void shuffle(List<?> list, Random rnd)

public static <T extends Comparable<? super T>> void sort(List<T> list)
public static <T> void sort(List<T> list, Comparator<? super T> c)


//Collection方法
//此 collection 中未包含在指定 collection 中的所有元素
boolean retainAll(Collection<?> c)

迭代器原理:

实现iterator()获得Iterator对象(cursor=0表示当前游标,lastRet=-1表示当前位置)

  1. hasNext()---cursor是否与size相等
  2. next() 获取get(cursor)  lastRet=cursor  cursor+1
  3. remove remove(lastRet)

List专属迭代器ListItertor获取方式List类型.listIterator,增加的方法

  1. nextIndex  返回cursor
  2. previousIndex 返回lastRet
  3. set(T) 替换cursor 所在的位置
  4. listIterator(int i)直接定位一个指定位置的迭代
  5. hasPrevious 反面的hasNext
  6. previous 反面的next()

LinkedList可用作栈(先进后出)、队列(先进先出)、双端队列

方法及差异

  1. getFist()、element()完全一样,返回列表的头(第一个元素)而并不移除,若列表为空,throw NoSuchElementException。poll与前两者的方法一样,不过在列表为空时返回null
  2. removeFirst、remove(),移除并返回列表的头。列表为空throw NoSuchElementException;poll返回null
  3. addFirst与add(后)、addLast、offer(后),将元素插入列表的端部
  4. removeLast()移除并返回列表的最后一个元素。

Set-集合:HashSet、TreeSet(红黑树、顺序的)、LinkedHashSet

HashMap-键值对: entrySet\keySet\contain   

Statck:已废弃 可用LinkedLIst实现

Queue:PriorityQueue

容器总结

这部分涉及的API过多,建议读源码以及查看API学习,不一一罗列

容器有两个大部门Collection与Map(键值对),Arrays和Collections提供了很多有用的工具方法。

Collection有多个分部,类似数组的List、像数学集合一样的Set、先进先出的Queue、先进后出的Stack(废弃)

对于不同的接口,使用时按照逻辑走就可以,比如list,像数组一样就可以直接get(int),Set不刻意重复,就要便利去,栈、队列这些就要操作端

迭代器总结:只可以像前跑不能后退

使用时继承实现接口Iterable,并重写方法Iterator<T> iterator(); 用来返回Iterator

Iterator就有了我们熟悉的hasNext()  next()  remove

特殊的List有个自己的ListIterator  特殊之处在于他可以向后退hasPrevious()  previous() nextIndex() previousIndex()

工具类关键点

Collections.shuffle(List<?> list) 

Integer[] ia = {1,2,3,4,5}

若list =  new ArrayList(Arrays.asList(ia )) 则list顺序为乱序,ia依旧是顺序的;;原因使用构造器会生产一个新的数组对象(List底层为数组)

若list = Arrays.asList(ia ) 则都为乱序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值