List集合常用方法

这里总结了一下List集合常用的一些方法,但是最重要的大家一定要注意最后数组那块的坑。

1、增

  • add();
  • add(int index, T t);
  • addAll(Collection);
  • addAll(int index, Collection);
public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add(0, "world");
        System.out.println(list);

        Collection<String> collection = new ArrayList<>();
        collection.add("LXH");
        collection.add("www.mldn.cn");
        list.addAll(collection);
        list.addAll(0, collection);
        System.out.println(list);
}

执行结果:

[world, hello]
[LXH, www.mldn.cn, world, hello, LXH, www.mldn.cn]

2、删

  • remove(int index); 根据角标删除元素
  • remove(T t); 根据元素内容删除元素
public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add(0, "world");
        list.add("MLDN");
        list.add("www.mldn.cn");
        //根据角标删除元素,并返回当前删除的元素值
        System.out.println(list.remove(0));
        //根据元素内容删除元素,并返回是否删除成功
        System.out.println(list.remove("hello"));
        System.out.println(list);
    }

执行结果:

world
true
[MLDN, www.mldn.cn]

3、改

  • set(int index, T t); 将第index上的元素替换成t
public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add(0, "world");
        list.add("MLDN");
        list.add("www.mldn.cn");
        //根据角标删除元素,并返回当前替换的元素值
        System.out.println(list.set(0, "hello"));
        System.out.println(list);
}

执行结果:

world
[hello, hello, MLDN, www.mldn.cn]

4、查

  • get(int index); 根据角标找到对应的元素

  • indexOf(T t); 根据元素找到对应的角标

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add(0, "world");
        list.add("MLDN");
        list.add("www.mldn.cn");
        //根据角标找到对应的元素,并返回当前的元素值
        System.out.println(list.get(0));
        //根据元素找到对应的角标,并返回
        System.out.println(list.indexOf("hello"));
        System.out.println(list);
}

执行结果:

world
1
[world, hello, MLDN, www.mldn.cn]

5、遍历

1、for循环遍历

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add(0, "world");
        list.add("MLDN");
        list.add("www.mldn.cn");

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }

2、for-each遍历

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add(0, "world");
        list.add("MLDN");
        list.add("www.mldn.cn");

        for (String s : list) {
            System.out.println(s);
        }
    }

3、迭代器遍历

 public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add(0, "world");
        list.add("MLDN");
        list.add("www.mldn.cn");
        
		Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) 
            System.out.println(iterator.next());
        }
 }

执行结果:

world
hello
MLDN
www.mldn.cn

6、将集合转化为对象数组

  • toArray(); 将集合转化成Object数组并返回(注意这里有个坑)

  • list.toArray(new String[list.size()]); 将集合元素放入**new
    String[list.size()**中然后返回

①用toArray()方法

public static void main(String[] args) {
        String[] s = null;
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add(0, "world");
        list.add("MLDN");
        list.add("www.mldn.cn");

		//注意这的坑
        s = (String[]) list.toArray();
        System.out.println(Arrays.toString(s));
}

执行结果:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
	at com.lanou.test.ArrayList.ArrayListTest.main(ArrayListTest.java:18)
		
原因是Object[] 数组不能强转成String[]数组;除非这个数组初始化的时候就指向了String[]数组。

一定要注意这里的坑。返回的是个Object数组

解决方法:

先转换成Object数组,然后用toString()再转换,但这种方法不是万能的,你们可以自己好好想一下为什么?其实就是当你存入自己写的类的对象的时候,如果你没有重写toString()那么你的值应该就取不到了。

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add(0, "world");
        list.add("MLDN");
        list.add("www.mldn.cn");

        String[] s = new String[list.size()];
        Object[] o = list.toArray();
        for (int i = 0; i < o.length; i++) {
            s[i] = o[i].toString();
        }
        System.out.println(Arrays.toString(s));

}

②用toArray(new String[list.size()])

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add(0, "world");
        list.add("MLDN");
        list.add("www.mldn.cn");

        String[] s = null;
        s = list.toArray(new String[list.size()]);
        System.out.println(Arrays.toString(s));
}

执行结果:

[world, hello, MLDN, www.mldn.cn]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值