Set集合转化List集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Set集合转化List集合相关的知识,希望对你有一定的参考价值。

JAVA 求代码 因为不知道怎么获取Set里的值 有问告诉我说转化List就能获取里面的元素

Set 有键和值 一个list只能取键或值。

import java.util.ArrayList;

import java.util.HashSet;

public class Test

public static void main(String[] args)

baiSet<String> set = new HashSet<String>(); //生成Set

set.add("apple"); //set添加数据

List<String> list = new ArrayList<String>();//生成List

Iterator<String> it = set.iterator(); //遍历Set

while(it.hasNext())

list.add(it.next().toString()); //Set转化List

Iterator<String> it2 = list.iterator(); //遍历List

while(it2.hasNext())

System.out.println(it2.next()); //输出List

扩展资料:

在列表中,数据项的顺序是确定的,也可以存在多个相同的数据项。列表支持的操作包括查找项目并找到其位置(若存在),将项目从列表中删除,在特定位置插入项目等。通常的队列,或称FIFO即是一个列表,该列表只能在一端添加项目,而在另一端删除项目。

而栈,或LIFO则只能在同一端添加或删除项目。不管是队列还是栈,集合中项目的顺序都应当是一定的,因此这两种情况只是列表的特例。其它列表支持的操作包括排序,再一次说明了其中顺序的重要性。

参考资料来源:百度百科-集合

参考技术A

因为List和Set都实现了Collection接口,且都实现了addAll(Collection<? extends E> c)方法,因此可以采用addAll()方法将List和Set互相转换;

另外,List和Set也提供了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);

扩展资料:

List与Set区别:

List与 set 不同,列表通常允许重复的元素。更确切地讲,列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素。

难免有人希望通过在用户尝试插入重复元素时抛出运行时异常的方法来禁止重复的列表,但我们希望这种用法越少越好。

List 接口在 iterator、add、remove、equals 和 hashCode 方法的协定上加了一些其他约定,超过了 Collection 接口中指定的约定。为方便起见,这里也包括了其他继承方法的声明。

List 接口提供了 4 种对列表元素进行定位(索引)访问方法。列表(像 Java 数组一样)是基于 0 的。注意,这些操作可能在和某些实现(例如 LinkedList 类)的索引值成比例的时间内执行。因此,如果调用者不知道实现,那么在列表元素上迭代通常优于用索引遍历列表。

List 接口提供了特殊的迭代器,称为 ListIterator,除了允许 Iterator 接口提供的正常操作外,该迭代器还允许元素插入和替换,以及双向访问。还提供了一个方法来获取从列表中指定位置开始的列表迭代器。

List 接口提供了两种搜索指定对象的方法。从性能的观点来看,应该小心使用这些方法。在很多实现中,它们将执行高开销的线性搜索。

List 接口提供了两种在列表的任意位置高效插入和移除多个元素的方法。

参考资料:百度百科—list

参考技术B 转换其实很简单,SET集合里面的元素是不重复的赚LIST是比较容易的
比如:
一个set集合A 要转换成一个LIST集合
那么可以这么写
List list = new ArrayList(A);
这样就能转换完成
参考技术C

如果你只是要获取set里的值,可以用Iterator

Set<Integer> set = new HashSet<Integer>();
set.add(10);
set.add(11);
set.add(14);
set.add(10);
Iterator<Integer> it = set.iterator();
while (it.hasNext())

System.out.print(it.next() + " ");

如果你是想转换成List,可以这样:

List<Integer> list = new ArrayList<Integer>(set);
for (int i = 0; i < list.size(); i++)

System.out.print(list.get(i) + " ");

参考技术D

可以直接取啊

Set set=new HashSet();
List list=new ArrayList();
Iterator it=set.iterator();
while(it.hasNext())
list.add(it.next());

Java中Set 和List两个集合怎样互相转化

import java.util.HashSet;import java.util.Set;
public class tes
public static void main(String[] args)
//set集合,元素是不重复的。通过equal判断是否相等
//如果是自定义的对象,需要重写equal和hashcode方法
Set set = new HashSet();
set.add("sina");
set.add("baidu");
set.add("baidu");
System.out.println(set.toString());
set.remove("baidu");
System.out.println(set.toString());




======
结果:
[baidu, sina]
[sina]
参考技术A Set<Long> set = new HashSet<Long>();
List<Long> list = new ArrayList<Long>(set); -- set to list
new HashSet<Long>(list); -- list to set
参考技术B 都来自一个接口,好像不能转换吧,但可以嵌套使用,他们底层都是数组。

以上是关于Set集合转化List集合的主要内容,如果未能解决你的问题,请参考以下文章

Java中Set 和List两个集合怎样互相转化

Java中Set 和List两个集合怎样互相转化

java里set list 为啥能遍历集合

集合的操作

java中 我想把集合转化为数组

Python之路-集合