Set<E>接口和List<E>接口的根本区别是什么?
当前回答
列表: List允许重复元素和空值。易于搜索使用相应的索引的元素,也将显示元素在插入顺序。 例如:(linkedlist)
import java.util.*;
public class ListExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> l=new LinkedList<Integer>();
l.add(001);
l.add(555);
l.add(333);
l.add(888);
l.add(555);
l.add(null);
l.add(null);
Iterator<Integer> il=l.iterator();
System.out.println(l.get(0));
while(il.hasNext()){
System.out.println(il.next());
}
for(Integer str : l){
System.out.println("Value:"+str);
}
}
}
输出:
1 1 555 333 888 555 零 零 值:1 值:555 值:333 值:888 值:555 值:空 值:空
设置: Set不允许任何重复元素,它允许单个空值。它不会维护显示元素的任何顺序。只有TreeSet将按升序显示。
例如:(TreeSet)
import java.util.TreeSet;
public class SetExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet<String> set = new TreeSet<String>();
try {
set.add("hello");
set.add("world");
set.add("welcome");
set.add("all");
for (String num : set) {
System.out.println( num);
}
set.add(null);
} catch (NullPointerException e) {
System.out.println(e);
System.out.println("Set doesn't allow null value and duplicate value");
}
}
}
输出:
所有 你好 欢迎 世界 java.lang.NullPointerException Set不允许空值和重复值
其他回答
Set不能包含重复的元素,而List可以。List(在Java中)也意味着顺序。
Set<E>和List<E>都用于存储E类型的元素。区别在于Set是以无序方式存储的,不允许重复值。List用于以有序的方式存储元素,并且允许重复值。
Set元素不能通过索引位置访问,而List元素可以通过索引位置访问。
元素的有序列表(是否唯一) 遵循Java的名为List的接口 可以通过索引访问吗
实现使用
LinkedList ArrayList
独特元素列表: 遵循Java名为Set的接口 不能通过索引访问
实现使用
HashSet(无序) LinkedHashSet(命令) 树集(按自然顺序或按提供的比较器排序)
接口Set和List都符合Java的名为Collection的接口
List是一个有序的元素序列,而Set是一个无序的元素列表(谢谢你,Quinn Taylor)。
(<和>:
有序集合(也称为 序列)。本界面的用户 有精确的控制在哪里 列出插入的每个元素。的 用户可以通过它们来访问元素 整数索引(在列表中的位置), 并搜索列表中的元素。
Set <和>:
不包含 重复的元素。更正式, 集合不包含元素e1对 e2使得e1。等于(e2) at 最多一个空元素。正如所暗示的 的名称,此接口模拟 数学集合抽象。
设置: Set的集合中不能有Duplicate元素。它也是一个无序集合。要从Set中访问数据,只需要使用Iterator,基于索引的检索是不可能的。它主要用于需要唯一性收集的时候。
列表: List可以有重复的元素,插入时使用自然顺序。 因此,它可以基于索引或迭代器检索数据。它广泛用于存储需要基于索引进行访问的集合。
推荐文章
- Java中的split()方法对点(.)不起作用。
- 如何有效地比较两个无序列表(不是集合)?
- Eclipse调试器总是阻塞在ThreadPoolExecutor上,没有任何明显的异常,为什么?
- Java生成两个给定值之间的随机数
- 如何有效地从数组列表或字符串数组中删除所有空元素?
- 比较JUnit断言中的数组,简洁的内置方式?
- 在每个列表元素上调用int()函数?
- codestyle;把javadoc放在注释之前还是之后?
- 如何在Spring中定义List bean ?
- 将Set<T>转换为List<T>的最简洁的方法
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用Java重命名文件
- URL从Java中的类路径加载资源
- .toArray(new MyClass[0]) or .toArray(new MyClass[myList.size()])?
- Hibernate中不同的保存方法之间有什么区别?