java集合简介

集合 

我这篇博客  只是整理一下我对java中集合的理解的   

Collection

 

Collection   collection集合的一个根接口  。 

让我们来看看他定义了哪些方法吧!   

增加删除元素类方法  :Add(E e )    addAll    Clear  Remove  removeAll

工具类方法: Contains()    containsAll()    Equals   isEmpty    Size () 

其他方法 : toArray   toArray(T [] a)   Iterator  

 

如果在不考虑效率的前提下 , 这些函数是已经可以实现大部分操作了  。 实在不行 ,我们就把集合通过toArray方法转换为数组对象  。 然后我们再对他进行操作 。 但是, 每一个程序猿都要怀揣一个成为技术总监的理想  。 我们是不能这样浅尝辄止的 。 我们还得深入的去研究的 。 

List子接口

实现Collection接口的有List子接口。 List可以理解成一个链表 。 他比Collection 多出来一下可以操作元素下标的方法  。 如:

add(int index, E element)

addAll(int index, Collection<? extends E> c)
    get(int index)
    indexOf(Object o)
    lastIndexOf(Object o)
   remove(int index)

set(int index, E element)

有了这些方法  。 凡事实现List子接口的类都可以在链表的任意位置增加元素, 输出元素,替换元素了 。 还可以获得任意元素的下标了 。   

有很多类实现了List接口 。 但我们最常用的有两个 。 一个是ArrayList类  一个是LinkedList类 。  其中 ArrayList可以理解成一个动态数组 。 用的比较多 。 那么他除了实现了List接口的所有特性外还有什么功能呢? 

trimToSize()  删除ArrayList集合占用的多余的内存空间  。

就多这一个方法 。这个方法的实际意义也不是很大 。 因为java自身有相应的垃圾回收机制 。  所以我们只要掌握他从List接口上继承过来的方法就可以了 。

LinkedList他是一个双向链表 。 因此他占用的内存比较大 。 但相应的他的查找速度比较快。 是典型的一空间换时间的例子 。 所以他一般用在某些需要经常修改的数据上的。  

那么他除了实现List实现的功能外还有哪些特性呢?  

 addFirst(E e)

addLast(E e)
descendingIterator()

getFirst()
getLast()

listIterator(int index)
offer(E e)

offerFirst(E e)

peek()

peekLast()
poll()
pollLast()



pop()
push(E e)

这些方法虽然看起来很多 , 但是没有实现集合新功能 。 因为LinkedList是为那些经常用于增删改查的数据而设计的 。因此上面这些方法都是为了实现这些功能而设计的简便方法  。  

最后的pop push方法 说明LinkedList还经常被用于堆栈 。  

当面试时 , 如果主考官问题 ArrayListLinkedList 都一般在什么时候用时 。 你可以这样回答 LinkedList随机增删多的场景比较合适,而ArrayList的随机访问多的场景比较合适。

Set子接口。   



Set这个子接口并没有自己多余的方法  。  只是实现了Collection的所有方法 。 但这并不代表他的功能很少  。 Set一个十分重要的特点是放入其中的元素是不能相等的 。 

Set子接口有两个十分重要的实现类 。 HashSettreeSet 类 。 

Hashset类。 这个类竟然没有一个自己多余的方法  全部都是从set子接口实现的方法 。 我觉得也真是因为这个, 所以他运行是占用的内存和效率都是比较低的 。 

TreeSet 这个类有一个十分重要的特性 。 就是自动排序功能 。 根据什么排序的呢?   方法一:  放入其中的元素都继承了comparable接口 。

 方法二: 定义treeset时 创于一个comparator对象  。  

因为多了排序的特性 。 所以也多了如下方法 。  

tailSet(E fromElement, boolean inclusive)

tailSet(E fromElement)

 subSet(E fromElement, E toElement)

subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
pollLast()
lower(E e)

last()

higher(E e)
headSet(E toElement, boolean inclusive)
floor(E e)

descendingSet()

comparator()

ceiling(E e)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值