Collection子接口之List

上一节粗略的记录了关于Collection接口的小方法,Collection有两个子接口List和Set
List接口

  1. 元素存储有序的集合
  2. 带索引
  3. 集合中可以有重复的元素
  4. 常用的子类ArrayList和LinkedList

List的方法
add、remove、set(int dex,Object e)、get()
ArrayList
底层采用数组结构
add() //将元素插入到指定的索引上

    public static void fun(){
        //声明创建ArrayList对象list,实现list接口
        List<String> list=new ArrayList<String>();
        list.add("浪潮却渴望重回土地");
        list.add("在绿树白花的篱前");
        list.add("曾那样轻易地挥手道别");
        System.out.println(list);
        //add(index,"")  将元素插入到索引0的位置
        list.add(0,"溪水急着要流向海洋");
        System.out.println(list);
    }

显示结果:

[浪潮却渴望重回土地, 在绿树白花的篱前, 曾那样轻易地挥手道别]
[溪水急着要流向海洋, 浪潮却渴望重回土地, 在绿树白花的篱前, 曾那样轻易地挥手道别]

set() 修改指定索引上的元素 返回值是被修改的元素

    public static void fun1(){
        List<String> s=new ArrayList<String>();
        s.add("悄悄是别离的笙箫");
        s.add("沉默是今晚的康桥");
        String s1=s.set(0,"再别康桥");
        //返回的是修改前的元素
        System.out.println(s1);
        //输出修改后的集合
        System.out.println(s);
    }

显示结果:

悄悄是别离的笙箫
[再别康桥, 沉默是今晚的康桥]

remove() 移除指定索引上的元素 返回值是被删除的元素

    public static void fun2(){
        List<String> list=new ArrayList<String>();
        list.add("我希望逢着");
        list.add("一个丁香一样地");
        list.add("结着愁怨的姑娘");
        String s=list.remove(0);
        //返回的是被移除的元素
        System.out.println(s);
        //输出删除后的集合
        System.out.println(list);
    }

显示结果:

我希望逢着
[一个丁香一样地, 结着愁怨的姑娘]

get() 普通的for循环遍历

   public static void fun3(){
        List<String> list=new ArrayList<String>();
        list.add("I");
        list.add("love");
        list.add("java");
        //判断集合中是否有"love",假如有,把"very much"放进集合中
        for (int i = 0; i <list.size() ; i++) {
            if((list.get(i)).equals("love")){
                //如果有love,则输出"love",没有则不执行括号里的代码段
                System.out.println(list.get(i));
                list.add("very much");
            }
        }
        System.out.println("=========================");
        //把添加后的元素一同遍历输出
        for (int i = 0; i <list.size() ; i++) {
            System.out.println(list.get(i));
        }
    }

显示结果:

love
=========================
I
love
java
very much

增强型for循环
迭代器的并发异常 、增强型for循环 ,在遍历或者过程中对集合进行增删,都会发生异常

    public static void fun4(){
        List<String> list=new ArrayList<String>();
        list.add("I");
        list.add("love");
        list.add("java");
        //增强型for循环不再按照索引遍历集合元素
        for(String i:list){
            if(i.equals("love")){
                list.add("very much");
            }
        }
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String s = it.next();
            //对获取的元素 s进行判断 是不是有love
            System.out.println(s);
        }
    }

显示结果:

Exception in thread "main" java.util.ConcurrentModificationException

LinkedList
底层采用连式结构,每次查询都是从头或者尾开始,查询速度较慢
特有的方法removeFirst()、removeLast()
removeFirst() 移除头部元素(removeLast() 移除尾部元素)

public static void fun(){
        LinkedList<String> link=new LinkedList<String>();
        link.add("每当我听到雨声");
        link.add("就像听到了心中的迷茫");
        //移除头部元素
        link.removeFirst();
        System.out.println(link);
[就像听到了心中的迷茫]

getFirst() 获取头部元素 (getLast() 获取尾部元素)

 public static void fun1(){
        LinkedList<String> link=new LinkedList<String>();
        link.add("春眠不觉晓");
        link.add("处处闻啼鸟");
        if (!link.isEmpty()){
            String first = link.getFirst();
            System.out.println(first);
        }
    }

显示结果:

春眠不觉晓

**注意:**对集合进行操作,要先判断集合是否为空,如果集合为空,直接对集合进行操作,会抛出异常

 public static void fun1(){
        LinkedList<String> link=new LinkedList<String>();
//        link.add("春眠不觉晓");
//        link.add("处处闻啼鸟");
        String last = link.getFirst();
        System.out.println(last);
        if (!link.isEmpty()){
            String first = link.getFirst();
            System.out.println(first);
        }
    }

显示结果:

Exception in thread "main" java.util.NoSuchElementException

add() 向集合中添加元素,并使用迭代器遍历

private static void fun2() {
        LinkedList<String> link=new LinkedList<String>();
        link.addLast("周游世界");
        link.addLast("劈柴喂马");
        link.addFirst("春暖花开");
        link.addFirst("面朝大海");
        //迭代器  是一种遍历集合元素的方法
        //通过iterator()方法,获得link的迭代器
        Iterator<String> it = link.iterator();
        //判断集合中对象是否有下一个元素,没有返回false
        while(it.hasNext()){
            //获取下个元素
            String next = it.next();
            System.out.println(next);
        }
    }

显示结果:

面朝大海
春暖花开
周游世界
劈柴喂马
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值