list接口

1.List接口的常用方法

public static void main(String[] args) {
        List list = new ArrayList();
        //add添加元素
        list.add("jack");
        list.add(10);
        list.add(true);
        System.out.println("list = " + list);
        
        //remove, clear, size, isEmpty, set, get(int)过于简单,略过
        
        //contains查找元素是否存在
        System.out.println(list.contains("jack"));
        //int indexOf(Object obj):返回obj在集合中首次出现的位置
        System.out.println(list.indexOf(10));//2
        // List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
        // 注意返回的子集合 (fromIndex,toIndex] 左开右闭
        List returnlist = list.subList(0, 2);
 
        //addAll添加多个元素
        ArrayList list2 = new ArrayList();
        list2.add("hlm");
        list2.add("sgyy");
        list.addAll(list2);
        System.out.println("list = " + list);
        //containsAll:判断多个元素是否存在
        System.out.println(list.containsAll(list2));
        //removeAll 删除多个元素
        list.add("lz");
        list.removeAll(list2);
        System.out.println("list = " + list);
	}

2. 迭代器 iterator

iterator多用来遍历list,可以理解成一个指针。他只有nset(), hasNext(), move()三个方法。

增强循环 for(数据类型 a:集合名称){} 底层实现就是iterator

public static void main(String[] args) {
        Collection col = new ArrayList();
        col.add(new Book("三国演义", "罗贯中", 10.1));
        col.add(new Book("小李飞刀", "古龙", 5.1));
        col.add(new Book("三红楼梦", "曹雪芹", 34.6));
        
        // 使用迭代器实现遍历集合
        //1、 先得到col对应的迭代器
        Iterator iterator = col.iterator();
        //2、使用while循环遍历
        while(iterator.hasNext()) {
            //3.返回下一个元素, 类型是Object
            Object obj = iterator.next();
            //iterator.move()	//这个方法可以删除此时iterator所指向的元素
            System.out.println("obj=" + obj);
        }
    }

3.各个类的区别

都实现了list接口,另外linkliset实现了deque接口。

3.1 Vector

vector和arraylist都是用可变数组实现的。但是vector使用了synchronized,保证了线程安全,但是牺牲了性能。所以,vector or arraylist 要视情况而定。
strack是vector的子类,其方法有:

  • peek() //看栈顶
  • pop() //弹出
  • push() //压栈
  • empty() //空判断
  • search(Obj) //查找对象位置,不存在返回null

3.2ArryList

  • 是数组实现的。
  • 数组有下标,查改效率高

3.3LinkList

  • LinkedList底层维护了一个双向链表
  • LinkedList中维护了两个属性first和last分别指向首节点和尾节点
  • 每个节点(Node对象),里面又维护了prev、next、item三个属性,其中prev指向前一个,通过next指向后一个节点,最终实现双向链表
  • 通过link增删元素,不需要像array一样涉及扩容,移位的问题,增删效率高
  • 可以添加任意元素(可以重复), 包括null
  • 线程不安全,没有实现同步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值