黑马程序员——Collection集合的一点介绍

------- android培训 java培训 、期待与您交流! ----------
首先我们要知道为什么会出现集合?
 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象进行存储和操作,就必须对对象进行存储,java提供了集合类供我们使用,因此集合类就是存储对象最常用的一种方式。这就是集合类的由来。


数组和集合类同是容器,有何不同呢?那么我给大家介绍一下数组与集合类的区别:

数组:
 
  可以存储基本数据类型,也可以存储引用数据类型。数组的长度固定。但只能存储同一种数据类型的元素。


集合:
   只能存储引用数据类型。如果存储的是基本数据类型,那是因为JDK5以后,可以进行自动装箱。下面代码体现一下:
    Integer i = 10; //做了什么操作,装箱 Integer i = new Integer(10);
    i += 20;  //做了什么操作:
      // i = i + 20;
       // 先把i做了拆箱,变成int类型 -- i.intValue()+20
       //最后把结果30再次装箱赋值给Integer类型的i变量
  集合的也有个特点那就是长度是可变的。 可以存储不同类型的对象元素,一般存储的是同一种类型的元素。

介绍完集合与数组的不同,现在介绍集合类的体系结构,图解:

黑马程序员——关于集合类的概述 - 王勇文 - 王勇文的博客

----collection 的几种方法    

存储:add,addAll      删除:remove,removeAll,clear      判断:contains, containsAll,isEmpty
取出:iterator        将集合变成数组:toArray       取两个集合的交集:retainAll        获取集合的长度:size

 

----List接口中的特有方法    

  存储元素:add(int index,Object obj )      删除元素:remove(int index)                 修改元素:set(int index,Object obj)            截取元素: subList(int start,int end)    获取元素:get(int index)     获取位置:indexOf(Object obj)        特有迭代器:listIterator

 

----List 接口下的几种常用的类的特点:

ArrayList:底层数据结构是数组结构。线程不安全。所以它的出现替代了Vector。增删的效率很慢,但是查询的效率很高。
Vector:底层数据结构是数组结构。线程安全。无论增删还是查询都非常慢。
LinkedList:底层是链表数据结构。线程不安全。对元素的增删的操作效率很高,查询的效率低。


 

-----Set 接口下的常用类介绍

HashSet底层数据结构是哈希表。哈希表这种结构,其实就是对哈希值的存储。
 如何保证元素唯一性的呢?

是通过元素的两个方法,hashCode和equals来完成。
 如果元素的HashCode值相同,才会判断equals是否为true。
 如果元素的hashcode值不同,不会调用equals

HashSet的一个子类的介绍

LinkedHashSet:它是基于哈希表和链接列表结果的对象。它既用哈希表存储数据,又用链表保证元素有序。


TreeSet
 数据结构是二叉树数据结构。这种结构,可以提高排序性能。
 它又是如何保证元素唯一性的呢?

它通过compareTo方法来达到这一目的。实现compareTo方法有两个 1:让元素具备比较性,元素需要实现Comparable接口,覆盖comparableTo方法,这个方式称为元素的自然比较顺序。    2:让集合具备比较性,当你觉得自然比较性不爽时,你可以自定义比较器,实现Comparator接口,覆盖compare方法。


 

 --Map 集合的特点: 

 1:是一个双列集合

  2:Map一次存一对元素,以键值对的形式存在,键和值有对应关系

  3:Map集合中必须要保证集合中键的唯一性

Map接口中的功能: 
存储:put,putAll
删除:remove,clear
判断:containsKey,containsValue,isEmpty
获取:size,get,keySet,values, entrySet


Map下的常用类: 
HashMap:底层也是哈希表数据结构。线程不安全。允许null作为键和值,替代了Hashtable
Hashtable:底层是哈希表数据结构。线程安全。不允许null作为键和值。
TreeMap:底层是二叉树。线程不安全。可以用来对Map集合中的键进行排序。

那么,就差不多介绍到这里了,关于取出集合元素呢我提供一个Iterator 迭代器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值