【转载】Java Array、List、Set互相转化

296 阅读1分钟

版权声明:本文为CSDN博主「Spground」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/u014532901/…

1. Array、List、Set互转实例

1.1 Array、List互转

  • ArrayList

String[] s = new String[]{"A", "B", "C", "D","E"};
List<String> list = Arrays.asList(s);

注意这里list里面的元素直接是s里面的元素( list backed by the specified array),换句话就是说:s的修改,直接影响list


s[0] ="AA";
System.out.println("list: " + list);

输出结果:

list: [AA, B, C, D, E]

  • ListArray

String[] dest = list.toArray(new String[0]);//new String[0]是指定返回数组的类型 
System.out.println("dest: " + Arrays.toString(dest));

输出结果:

dest: [AA, B, C, D, E] 

注意这里的dest里面的元素不是list里面的元素,换句话就是说:list中关于元素的修改,不会影响dest

 list.set(0, "Z");
 System.out.println("modified list: " + list);
 System.out.println("dest: " + Arrays.toString(dest)); 

输出结果:

modified list: [Z, B, C, D, E] 
dest: [AA, B, C, D, E] 

可以看到list虽然被修改了,但是dest数组没有没修改。

1.2 List、Set互转

因为ListSet都实现了Collection接口,且addAll(Collection<? extends E> c);方法,因此可以采用addAll()方法将ListSet互相转换;另外,ListSet也提供了Collection<? extends E> c作为参数的构造函数,因此通常采用构造函数的形式完成互相转化。

//List转Set
Set<String> set = new HashSet<>(list);
System.out.println("set: " + set);
//Set转List
List<String> list_1 = new ArrayList<>(set);
System.out.println("list_1: " + list_1);

toArray()一样,被转换的List(Set)的修改不会对被转化后的SetList)造成影响。

1.3 Array、Set互转

1.1 1.2可完成Array和Set的互转

//array转set
s = new String[]{"A", "B", "C", "D","E"};
set = new HashSet<>(Arrays.asList(s));
System.out.println("set: " + set);
//set转array
dest = set.toArray(new String[0]);
System.out.println("dest: " + Arrays.toString(dest));