List集合

1. List集合概述

 List集合代表一个元素有序可重复的的集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置上的集合元素。List集合默认按元素的添加顺序设置元素的索引,例如第一次添加的元素索引为0,第二次添加的元素索引为1·····

1.1 List集合特有方法

 a. void  add(int index,Object element):将元素element插入到List集合的index处

 b. Object  remove(int index):删除并返回index处的元素

 c. Object  get(int index):返回集合index索引处的元素

 d. Object  set(int index,E element):将index索引处的元素替换成element对象,返回被替换的旧元素

List集合特有遍历功能:size() get()方法结合使用

示例:

package com.xupt.List;

import java.util.ArrayList;

import java.util.List;

import com.xupt.student.Student;

/*

 * 使用size()和get()方法遍历List集合

 */

publicclass ListTest01 {

    publicstaticvoid main(String[] args) {

       List<Student> list=new ArrayList<Student>();

       list.add(new Student("胡歌",33));

       list.add(new Student("霍建华",32));

       list.add(new Student("刘诗诗",31));

       list.add(new Student("杨幂",30));

      

       for(int i=0;i<list.size();i++){

       System.out.println(((Student)list.get(i)).getName()+"——"+((Student)list.get(i)).getAge());

       }

    }

}

1.2 ListIterator接口

 与Set只提供了一个iterator()方法不同的是,List还额外提供了一个ListIterator()方法,该方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,提供了专门操作List的方法。ListIterator接口在Iterator接口基础上增加了如下方法:

 a. booleanhasNext():是否有下一个元素

 b. booleanhasPrevious():是否有前一个元素

 c. Object next():返回下一个元素

 d. Objectprevious():返回上一个元素

 e. void add(Objecto):在指定位置插入一个元素

1.3并发修改异常

 在迭代过程中,使用了集合的方法对元素进行操作。导致迭代器并不知道集合中的变化,容易引发数据的不确定性。

 并发修改异常解决办法:在迭代时,不要使用集合的方法操作元素。通过ListIterator迭代器操作元素。ListIterator的出现,解决了使用Iterator迭代过程中可能会发生的错误情况。

示例:


输出结果:


解决方案:


2.Vector集合

 Vector集合数据存储的结构是数组结构,为JDK中最早提供的集合。Vector中提供了一个独特的取出方式,就是枚举Enumeration,它其实就是早期的迭代器。此接口Enumeration的功能与 Iterator 接口的功能是类似的。Vector集合已被ArrayList替代。枚举Enumeration已被迭代器Iterator替代。

2.1 Vector常见的方法

2.2 Enumeration枚举常见的方法

2.3 Vector集合遍历

3. ArrayList集合

 ArrayList集合数据存储的结构是数组结构。元素增删慢,查找快,开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是最常用的集合。

4. LinkedList集合

 LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。如下图:


         ArrayList:底层数据结构是数组,查询快,增删慢

   LinkedList:底层数据结构是链表,查询慢,增删快

5. 固定长度的List

 数组工具类Arrays里提供了一个asList(Object… a)方法,该方法可以把一个数组或者指定个数的对象转换成一个List集合,这个List集合既不是ArrayList实现类的实例,也不是Vector实现类的实例,而是Arrays的内部类ArrayList的实例。Arrays.ArrayList是一个固定长度的List集合,程序只能遍历访问该集合里的元素,不可增加、删除该集合里的元素,否则将会引发UnsupportedOperationException异常。

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值