java-List集合使用以及介绍

List

public interface List<E> extends Collection<E>

有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
从以下版本开始: 1.2
特点: 有序、带索引、可重复
一、List 接口提供了 4 种对列表元素进行定位(索引)访问方法:

 void add(int index, E element)
 在列表的指定位置插入指定元素(可选操作)。
E get(int index)
返回列表中指定位置的元素。
  E remove(int index)
  移除列表中指定位置的元素(可选操作)。
E set(int index, E element)
用指定元素替换列表中指定位置的元素(可选操作)。

二、关于list集合的遍历:

		//遍历1
        for(int i = 0 ;i<list.size();i++){
            System.out.print(list.get(i)+" ");
        }
//遍历2
        for(String str:list){
            System.out.print(str+" ");
        }
Iterator<String> car = list.iterator();
        while(car.hasNext()){
            System.out.print(car.next()+" ");
        }

三、List集合常用实现类

  1. java.util.LinkedList
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable

特点:
1.底层是链表结构:查询慢,增删快
2.里边包含大量操作首尾元素
注意:使用LinkedList集合特有的的方法时,不能使用多态

LinkedList特有方法:

 void addFirst(E e)
 将元素插入此列表的开头。
  void push(E e)
  将元素推入此列表所表示的堆栈。底层调用了addFirst方法
  void addLast(E e)
  将元素添加到此列表的结尾。
 E getFirst()
 返回此列表的第一个元素。
  E peek()
  获取但不移除此列表的头(第一个元素)。
 E getLast()
 返回此列表的最后一个元素。
  E removeFirst()
  移除并返回此列表的第一个元素。
  E pop()
  从此列表所表示的堆栈处弹出一个元素。(第一个元素)
   E removeLast()
   移除并返回此列表的最后一个元素。
  1. java.util.ArrayList

构造方法摘要
ArrayList()
构造一个初始容量为 10 的空列表。
ArrayList(Collection<?extends E> c)
构造一个包含指定 collection 的元素的列表,这些元素是按照该collection的迭代器返回它们的顺序排列的。
ArrayList(int initialCapacity)
构造一个具有指定初始容量的空列表。

四、Vector类

public class Vector<E> extends AbstractList<E>
   implements List<E>, RandomAccess, Cloneable, Serializable

JDK1.0
Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作

五、ArrayList、LinkedList、Vector区别
ArrayList 底层采用数组,可以使用索引查询、添加、删除元素,是一个不同步的类(unsynchronized),即不安全。因为使用数组,所以查询速度快,而添加、删除慢。默认初始容量为10,超过原始容量时扩容方式为原来容量的1.5倍(每次扩充空间的大小可以设置)

int newCapacity = oldCapacity + (oldCapacity >> 1);

LinkedList底层采用双向链表,对头尾结点进行操作速度快,对数据的索引查找需从头结点开始,速度访问,而插入、删除不需要对数据进行移动,速度会快。一个不同步的类(unsynchronized),即不安全。

Vector底层是数组结构,是一个线程安全的类,方法被synchronized修饰。Vector默认扩充为原来的两倍(每次扩充空间的大小可以设置),正是由于Vector提供了线程安全的机制,其性能上也要稍逊于ArrayList。Vector版本开始于jdk1.0

对容器的选择:
当对数据的主要操作是索引或只在集合的末端增加、删除元素时,使用ArrayList或Vector效率比较高,
当对数据的操作主要为指定位置或删除操作时,使用LikedList效率比较高;当在多线程中使用容器时,选用Vector较为安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值