015Java知识点小结--集合

今天开始学习集合,其实内容不难,就是要掌握Collection接口各个实现类的方法,尤其是“增”、“删除”、“改”、“查”的方法。

1.集合类

  1. 为什么出现集合类?
    面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类。
  2. 数组和集合类同是容器,有何不同?
    数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储基本数据类型也可以存储对象,集合只能存储对象。
  3. 集合类的特点
    集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象

2.Collection接口:

Collection 接口是 List、Set 和 Queue 接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。

JDK不提供此接口的任何直接实现,而是提供更具体的子接口(如:Set和List)实现。

Set:元素无序、不可重复的集合
List:元素有序,可重复的集合 


在 Java5 之前,Java 集合会丢失容器中所有对象的数据类型,把所有对象都当成 Object 类型处理;从 Java5 增加了泛型以后,Java 集合可以记住容器中对象的数据类型

Collection 接口方法:

  1. size():返回集合中元素的个数列表内容
  2. add(Object obj):向集合中添加一个元素
  3. addAll(Collection coll):将形参coll中包含的所有元素添加到当前集合中
  4. isEmpty():判断集合是否为空
  5. clear():清空集合元素
  6. contains(Object obj):判断集合中是否包含指定的obj元素。如果包含,返回true,反之返回false。判断的依据:根据元素所在的类的equals()方法进行判断。明确:如果存入集合中的元素是自定义类的对象。要求:自定义类要重写equals()方法!
  7. containsAll(Collection coll):判断当前集合中是否包含coll中所有的元素
  8. retainAll(Collection coll):求当前集合与coll的共有的元素,返回给当前集合
  9. remove(Object obj):删除集合中的obj元素。若删除成功,返回true。否则,返回false
  10. removeAll(Collection coll):从当前集合中删除包含在coll中的元素。
  11. equals(Object obj):判断集合中的所有元素是否完全相同
  12. hashCode():
  13. toArray() :将集合转化为数组
  14. iterator():返回一个Iterator接口实现类的对象,进而实现集合的遍历!

    使用迭代器Iterator实现集合的遍历
            Iterator i = coll.iterator();
            while(i.hasNext()){
                System.out.println(i.next());
            }
    
    使用增强for循环实现集合的遍历
            for(Object i:coll){
                System.out.println(i);
            }
    //增强for循环中i是新定义的局部变量,其值的修改不会对coll本身造成影响。
    

3.List接口

List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。
List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。

JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。

List中相对于Collection,新增加的方法

  1. void add(int index, Object ele):在指定的索引位置index添加元素ele
  2. Object get(int index):获取指定索引的元素
  3. Object remove(int index):删除指定索引位置的元素
  4. Object set(int index, Object ele):设置指定索引位置的元素为ele
  5. int indexOf(Object obj):返回obj在集合中首次出现的位置。没有的话,返回-1
  6. int lastIndexOf(Object obj):返回obj在集合中最后一次出现的位置.没有的话,返回-1
  7. List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex结束的左闭右开一个子list

4.List实现类之一:ArrayList

ArrayList 是 List 接口的典型实现类
本质上,ArrayList是对象引用的一个变长数组

ArrayList类:底层数据结构是数组,查询快,增删慢
ArrayList 是线程不安全的,而 Vector 是线程安全的,即使为保证 List 集合线程安全,也不推荐使用Vector

Arrays.asList(…) 方法返回的 List 集合既不是 ArrayList 实例,也不是 Vector 实例。 Arrays.asList(…) 返回值是一个固定长度的 List 集合

5.List实现类之二:LinkedList

LinkedList类: 底层数据结构是链表,查询慢,增删快
线程不安全,效率高,对于频繁的插入或删除元素的操作,建议使用LinkedList类,效率较高

LinkedList的特有功能:

  1. 添加功能
    public void addFirst(Object e)
    public void addLast(Object e)

  2. 获取功能
    public Object getFirst()
    public Obejct getLast()

  3. 删除功能
    public Object removeFirst()
    public Object removeLast()

6.List 实现类之三:Vector

Vector 是一个古老的集合,JDK1.0就有了。大多数操作与ArrayList相同,区别之处在于Vector是线程安全的。
Vector类: 底层数据结构是数组,查询快,增删慢
线程安全,效率低

Vector的特有功能:

  1. 添加功能
    public void addElement(Object obj) – add()
  2. 获取功能
    public Object elementAt(int index) – get()
    public Enumeration elements() – Iterator iterator()
    boolean hasMoreElements() hasNext()
    Object nextElement() next()

    JDK升级的原因:
    1)安全
    2)效率
    3)简化书写
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值