Set 有键和值 一个list只能取键或值。
import java.util.ArrayList;
import java.util.HashSet;
public class Test {
public static void main(String[] args) {
baiSet
set.add("apple"); //set添加数据
List
Iterator
while(it.hasNext()){
list.add(it.next().toString()); //Set转化List
}
Iterator
while(it2.hasNext()){
System.out.println(it2.next()); //输出List
}
扩展资料:
在列表中,数据项的顺序是确定的,也可以存在多个相同的数据项。列表支持的操作包括查找项目并找到其位置(若存在),将项目从列表中删除,在特定位置插入项目等。通常的队列,或称FIFO即是一个列表,该列表只能在一端添加项目,而在另一端删除项目。
而栈,或LIFO则只能在同一端添加或删除项目。不管是队列还是栈,集合中项目的顺序都应当是一定的,因此这两种情况只是列表的特例。其它列表支持的操作包括排序,再一次说明了其中顺序的重要性。
参考资料来源:百度百科-集合
因为List和Set都实现了Collection接口,且都实现了addAll(Collection extends E> c)方法,因此可以采用addAll()方法将List和Set互相转换;
另外,List和Set也提供了Collection extends E> c作为参数的构造函数,因此通常采用构造函数的形式完成互相转化。
//List转Set
Set
System.out.println("set: " + set);
//Set转List
List
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
转换其实很简单,SET集合里面的元素是不重复的赚LIST是比较容易的
比如:
一个set集合A 要转换成一个LIST集合
那么可以这么写
List list = new ArrayList(A);
这样就能转换完成
如果你只是要获取set里的值,可以用Iterator
Setset = new HashSet ();
set.add(10);
set.add(11);
set.add(14);
set.add(10);
Iteratorit = set.iterator();
while (it.hasNext())
{
System.out.print(it.next() + " ");
}
如果你是想转换成List,可以这样:
Listlist = new ArrayList (set);
for (int i = 0; i < list.size(); i++)
{
System.out.print(list.get(i) + " ");
}
可以直接取啊
Set set=new HashSet();
List list=new ArrayList();
Iterator it=set.iterator();
while(it.hasNext()){
list.add(it.next());
}