黑马程序员——Java基础——Collection集合的总结

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


Collection集合总结

Collection 是单列集合的根接口

----------------------| List实现了List接口的集合其特点元素存储和获取有序的元素可重复

----------------------------| ArrayList

底层数据结构是Object数组,特点:查询快,增删慢。

线程非安全,效率高

----------------------------| Vector

底层数据结构是Object数组,特点:查询快,增删慢。

线程安全,效率低

---------------------------| LinkedList

底层数据结构是链表数据结合,特点:查询慢,增删快。

线程非安全,效率高

-----------------------| Set实现了Set接口的集合其特点元素存储和获取是无序的,元素是唯一的不可重复

---------------------------| HashSet

底层数据结构是哈希表。

HashSet依赖两个方法:hashCode()和equals()来判断是否是重复元素

---------------------------------------| LinkedHashSet底层数据结构是链表和哈希表

由链表保证元素的存储与获取有序

由哈希表保证元素唯一的不可重复的

----------------------------| TreeSet

底层数据结构是红黑树。TreeSet通过两种方式进行排序:

第一种:自然排序

第二种:比较器排序

TreeSet通过返回值是否是0来判断是否是重复元素

集合与数组都是存储数据的容器他们之间有什么区别?
1、 长度的不同:
数组的长度是固定的,集合的长度是可变的。
2、 内容的不同
数组可以存储基本数据类型也可以是引用数据类型,集合只能存储引用数据类型。
3、 元素的不同
数组只能存储同一种数据类型,而集合可以存储多个不同的数据类型。

集合的体系结构:

由于需求不同,java给我们提供了很多集合类,这些集合类的数据结构不同,而我们要给这些集合类提供存储和遍历功能的,我们把他的功能不断的向上提取出来,这样就形成了集合的体系结构。

集合的种类有很多我们该如何选择呢?

一般我们选择集合是根据开发的需求,如果增删比较多的项目就选择LinkedList集合,如果查找获取比较多的那么就选择ArrayList集合。如果需要对元素进行排序和清除重复元素就需要使用Set接口的实现类集合。

Collection 接口集合的方法:

          增加的方法:
         add()                                                          添加元素
        addAll(Collection<? extends E> c)                 添加指定集合中的所有元素到另一个集合中
 
          删除的方法:
          clear()                                                          清空集合中的所有元素
          remove(Object o)                                          删除集合中指定的元素
 removeAll(Collection<?> c)                            删除两个集合的交集元素
           retainAll(Collection<?> c)               删除集合中与指定集合所有不同的元素,只保留两个集合的交集元素
 
          判断的方法:
contains(Object o)                                  判断集合是否包含指定的元素
containsAll(Collection<?> c)                    判断集合是否包含指定集合的所有元素
isEmpty()                                               判断集合是否为空
size()                                                     获取集合的长度
 
        迭代的方法:
          iterator()                                                            遍历集合中的所有元素
          toArray()                                                            把集合转成数组
          hasNext()                                                           判断游标是否指向了一个元素
          next()                                                                 抓取当前游标指向的元素,然后游标向下移动一个单位
          remove()                                                            移除迭代器最后一次返回的元素
        add(E e)                                                             在迭代到的元素后面位置添加元素到集合中

注意: 迭代器是依赖集合而存在的,因为集合在迭代的过程中不能添加删除或者修改元素,所以只能通过迭代器的添加删除修改方法,修改集合中的元素。

List接口特有方法:
获取的方法:
indexOf(Object o)获取指定元素第一次出现的索引值
astIndexOf(Object o)获取指定元素最后一次出现的索引值
get(int index)获取指定索引值的元素
subList(int fromIndex, int toIndex) 指定开始开始索引值和结束索引值截取集合中的元素

修改的方法:
set(int index, E element)根据指定的索引值修改集合中的元素


迭代的方法:
listIterator() 继承了Iterator 接口,实现了服接口的所有方法并添加了自己特有的方法
listIterator的方法:
hasPrevious()判断向上是否有元素
previous()  向上获取元素并把游标向上移动一个单元



LinkedList特有的方法:
增加的方法:
addFrist() 添加元素到集合的第一个位置
addLast() 添加元素到集合的最后一个位置


获取的方法:
getFirst()  获取集合的第一个元素
getLast() 获取集合的最后一个元素


删除的方法:
removeFirst() 获取集合的第一个元素
removeLast() 获取集合的最后一个元素


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值