List接口arraylist vector linkedlist

List接口

特点:有序,有下标,元素可重复

方法:

  1. void add(index,Object o)//在index位置插入对象o

index表示下标

  1. Object get(int index)//返回集合中指定位置的元素

  2. List subList(int fromIndex,int toIndex)//返回fromIndex和toIndex之间的集合元素 返回一个子集合。含头不含尾

List al = new ArrayList();
//添加元素add
al.add(0,"a");
al.add(1,"b");
al.add(2,"c");
al.add(0,"d");

System.out.println(al);
al.remove(0);//删除元素remove
System.out.println(al);
System.out.println(al.size());//获取容器大小
System.out.println(al.get(2));//获取下标为2的元素
System.out.println(al.subList(1,2));//获取元素 从下标的1 到2-1,并返回列表
System.out.println(al.contains("b"));//判断包含
System.out.println(al.indexOf("b"));//返回元素 b的下标

遍历

  1. 使用for

    get(i)

    for (int i = 0;  i<al.size() ; i++) {
        System.out.println(al.get(i));
    }
    
  2. 增强for

    for (Object obj:al
         ) {
        System.out.println(obj);
    }
    
  3. 迭代器iterator

    Iterator it = al.iterator();
    while (it.hasNext()){
        Object i = it.next();
        System.out.println(i);
    }
    
  4. 列表迭代器listIterator()

    特点:允许按任意方向遍历列表,迭代期间修改列表,并获得迭代器在列表中的当前位置

    hasPrevious()逆向迭代时 判断是否有前一个

    set()迭代过程中替换元素

    和Collection迭代器的区别 LIstIterator 可以向前或向后遍历,而且还可以添加删除修改元素

    //使用列表迭代器
    //从前往后
    ListIterator  lit= al.listIterator();
    while(lit.hasNext()){
        System.out.println(lit.nextIndex()+":"+lit.next());
    }
    //从后往前
    System.out.println("----------");
    while (lit.hasPrevious()){
        System.out.println(lit.previousIndex()+":"+lit.previous());
    }
    

List实现类

ArrayList:

底层为数组,查询快,增删慢。效率快,线程不安全,Vector线程安全

遍历/迭代

判断/包含

查找 :根据内容找下标位置 indexOf 返回下标

源码分析:

DEFAULT_CAPACITY = 10 默认容量

如果没有向集合中添加任何元素 容量为0

elementdata 存放元素的数组

size 实际元素个数

Vector

底层是数组结构,查询快,增删慢。

线程安全

枚举器遍历

可以使用枚举器 elements() Enumeration进行遍历

Enumeration en = vector.elements();
while (en.hasMoreElements()){
    String o = (String)en.nextElement();
    System.out.println(o);
}

LinkedList

底层为双向链表,增删快,查询慢

LinkedList linkedList = new LinkedList();

ArrayList和LinkedList的区别

ArrayList:必须开辟连续的空间,查询快,增删慢。

LinkedList:无需开辟连续空间,查询慢,增删快

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值