[Java]Java集合框架

一,Collection和Iterator接口

Collection有三个主要子接口:Set,Queue,List。
其中常用的实现类是:HashSet,TreeSet,ArrayDeque,ArrayList,LinkedList。
方法
添加一个元素:add(object o)
添加一个集合:addAll(collection c)
清除集合:clean()
返回集合里是否包含元素:contains(object o)
返回集合里是否包含集合里的所以元素:containsAll(collection c)
是否为空:isEmpty()
返回一个迭代对象:iterator()
删除集合中的元素:remove(object o)
删除集合里的元素:removeAll(collection c)
删除集合中不包含集合的元素:retainAll(collection c)
返回集合大小:size()
迭代
用foreach方法迭代:c.foreach(obj -> 函数方法(obj))
用Iterator的hasnext和next方法:

ArrayList<Integer> lists = new ArrayList<>();
lists.add(1);
Iterator<Integer> t = lists.iterator();
while(t.hasNext()){
System.out.println(t.next());
}

用迭代对象Iterator的forEachRemaining方法:t.forEachRemaining(obj -> 函数方法(obj))
用foreach方法:

for (Object obj : Collection<E>) {
    函数(obj)
}

过滤用的Predicate操作,removeIf用于批量删除集合里符合标准的元素,这也是一个函数接口。

二,Set接口

set接口有两个常用的实现类HashSet和TreeSet,其中HashSet是用hash算法储存,因此储存和查找性能好,最好让元素equlas方法和hashCode方法返回的值一样,这样储存才有意义,set里储存的都是不同的元素没有顺序,HashSet是线程不安全的,多线程的时候需要同步。

TreeSet是利用红黑树储存的集合,它有顺序不是按照添加顺序而是按照元素排列顺序。
新增方法
返回第一个元素:first()
返回最后一个元素:last()
返回e前面的一个元素:lower(obj e)
返回e后面的一个元素:higher(obj e)
返回from到to(不包含)的一个集合:subSet(from,to)
返回e(不包含)前面的集合:headSet(obj e)
返回e(包含)后面的集合:tailSet(obj e)
自然排序和定制排序
自然排序用元素的compareTo(Object obj)方法,比较关系然后升序排列。
定制排序用Comparator接口的compare(T o1, T o2)方法,比较o1和o2的大小排序。

三,List接口

list是有序集合按照添加顺序排列可以重复。
ListIterator接口
ListIterator接口是list特殊的迭代接口不仅可以往后还能往前,新增的方法:
判断是否有:hasPrevious()
返回前一个元素:previous()
添加元素:add()
ArrayList
ArrayList是list常用的实现类,底层用数组实现,线程不安全。

四,Queue接口队列

栈和队列
栈相对于吃完了吐,所以先进后出,队列相当于拉屎,所以的先进先出。
队列新元素插入(offer)到队列的尾部,访问元素(poll和peek)操作会返回队列头部的元素。
栈有出栈(pop)和入栈(push)两个方法。
Queue的实现类是LinkedList,他还是list的继承类,所以有两个接口的方法,内部用链表方式储存,因此插入删除性能比ArrayList强。

五,map接口

map接口是kv对集合,k不能相同v可以,map和set很像,可以把set看成没有k的map。
实现类有:HashMap,Properties,TreeMap
方法
删除map里的kv对:claear()
查询是否有k:containsKey(obj o)
查询是否有v:containsValue(obj o)
返回kv对组成的set:entrySet()
返回k对应的v:get(k)
返回k组成的set:keySet()
添加一对kv:put(k,v)
添加一个map:putAll(map)
删除k对应的kv对:remove(k)
返回kv对个数:size()
返回所有v组成的:values()
Properties
Properties是属性文件,一个单独的文件用来储存kv集合,然后用io打开这样可以分离代码和属性。
方法
从文件中读取:load(input)
往文件中写入:store(output,string comments)
得到Properties中k对于的v:getProperty(k)
设置Properties的属性:setProperty(k,v)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值