Java数组转LIst方式

一、Arrays.asList()

public class ListDemo {

	public static void main(String[] args) {
		String[] split = "abc,bcd,cde,def".split(",");
		List<String> list = Arrays.asList(split);
		//list.add("ggg");
		list.remove("abc");
		System.out.println(list);
	}
}

通过Arrays.asList()将数组转换成list,则该list只能进行查改操作,进行增删操作时会抛出如下异常:

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.remove(AbstractList.java:161)
	at java.util.AbstractList$Itr.remove(AbstractList.java:374)
	at java.util.AbstractCollection.remove(AbstractCollection.java:293)
	at com.lzw.demo6.ListDemo.main(ListDemo.java:12)

 我们通过源码可以分析出:

 通过此方法返回的是Arrays类里面的一个静态内部类java.util.Arrays.ArrayList,没用重写addremove方法,因此调用add方法时会抛出异常。

二、通过工具类Collections.addAll()

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ListDemo2 {

	public static void main(String[] args) {
		String[] split = "abc,bcd,cde,def".split(",");
		List< String> list = new ArrayList<String>(split.length);
        Collections.addAll(list,split);
        list.add("ggg");
        list.remove("abc");
		System.out.println(list);
	}
}
[bcd, cde, def, ggg]

这方式效率最好,通过Collections.addAll(arrayList, strArray)方式转换,根据数组的长度创建一个长度相同的List,然后通过Collections.addAll()方法,将数组中的元素转为二进制,然后添加到List中。 可以在list数据量较大时使用,可以增加效率。

三、使用java.util.ArrayList的构造器

package com.lzw.demo6;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListDemo3 {

	public static void main(String[] args) {
		String[] split = "abc,bcd,cde,def".split(",");
		 List<String> list = new ArrayList<>(Arrays.asList(split));
        list.add("ggg");
        list.remove("abc");
		System.out.println(list);
	}
}

此方法可以在小数据量时进行增删盖查,大数据量时效率不高。

猜你喜欢

转载自blog.csdn.net/weixin_42228950/article/details/104728411