LIST

一、List接口是collection接口的一个子接口,有序的、可以重复的集合
*

  • 面试题:ArrayList、LinkedList、Vector
    
  • 相同点:
    
  • 1.都是list集合的实现类
    
  • 2.存储数据的特点相同:有序的、可重复的
    
  • 不同点
    
  • –ArrayList:主要实现类,底层就是数组 Object[] elementData,,线程不安全,查询速度比较快
  • --LinkedList:底层是使用双向链条的形式进行存储的,添加、删除速度高
    
  • --Vector:是list接口的古老实现类,线程安全的,效率比较低,Object[] elementData
    
  • ArrayList底层实现
  • List list=new ArrayList();//并且对数组 Object[] elementData进行了初始化,初始化为{}
  • list.add(1);//第一次调用add方法,底层对数组长度进行了指定,指定为10
  • 如果添加的新元素导致数组elementData容量不够,进行了扩容,扩容了1.5倍,
  • 同时将原数组的元素值复制到了扩容后的新数组里面
  • LinkedList
  • List list=new LinkedList():在内部声明了Node类型的first和last属性值,默认为null
  • list.add(1); //调用add方法,把1封装到node中,创建了Node对象
  • node的定义为:
  • Node(Node prev, E element, Node next) {
    this.item = element;
    this.next = next;
    this.prev = prev;
    }
    Vector:在调用无参构造方法Vector()的时候,底层创建了一个长度为10的数组
    它扩容的是2倍
    // void add(int index, Object ele):根据坐标index把元素添加到指定的位置
    // boolean addAll(int index, Collection eles):根据坐标index把集合中所有的元素值添加到指定的位置
    // Object get(int index):根据索引值查询对应的元素
    // int indexOf(Object obj):查询元素obj第一次出现的索引值,如果找不到返回-1
    // int lastIndexOf(Object obj)
    // Object remove(int index):根据索引值删除该元素
    // Object set(int index, Object ele):根据索引值修改元素

增删改 查 size()方法
*/
public class TestList {

@Test
public void test(){
    List list=new ArrayList();
    //1.添加元素
    list.add("aaa");
    list.add("bbb");
    list.add(123);
    list.add("bbb");
    System.out.println(list);
    //将元素添加到指定位置
    list.add(0,110);
    System.out.println(list);

    //查询索引是2的元素值
    System.out.println(list.get(2));

    //修改
    list.set(0,"hehe");
    System.out.println(list.get(0));

    //删除
    list.remove(0);
    System.out.println(list);

    //indexOf():
    System.out.println(list.indexOf("bbb"));
    //最后一次出现的位置
    System.out.println(list.lastIndexOf("bbb"));

}

@Test
public void test1(){
    List list=new ArrayList();
    //1.添加元素
    list.add("aaa");
    list.add("bbb");
    list.add(123);
    list.add("bbb");

    System.out.println("=============1.迭代器");
    Iterator i=list.iterator();
    while(i.hasNext()){
        System.out.println(i.next());
    }

    System.out.println("=============2.增强for");
    for(Object o:list){
        System.out.println(o);
    }

    System.out.println("=====3.for循环");
    for(int a=0;a<list.size();a++){
        System.out.println(list.get(a));
    }

    System.out.println("===4.转成数组,建议不要这么做");

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值