为什么HashSet
也能成为以下问题的答案?当我测试代码时,HashSet
和TreeSet
都给出了相同的输出,但看起来正确的答案是TreeSet
。代码如下:
import java.util.*;
public class Example {
public static void main(String[] args) {
// insert code here
set.add(new Integer(2));
set.add(new Integer(1));
System.out.println(set);
}
}
在第4行插入的代码可以保证此程序可以使用 输出[1,2]?
Set set = new TreeSet();
Set set = new HashSet();
Set set = new SortedSet();
List set = new SortedList();
- 醇>
Set set = new LinkedHashSet();
答案 0 :(得分:2)
HashSet
unordered ,这特别意味着Java不保证存储密钥(以及因此值)的顺序。另一方面,TreeSet
以自然顺序存储其元素。
来自TreeSet
的{{3}}:
元素按照其自然顺序排序,或者在创建时创建时提供的比较器,具体取决于使用的构造函数。 如果对象不能 按自然顺序排序比使用compareTo()方法对TreeSet对象的元素进行排序,但hashmap使用equals()方法来比较元素。
答案 1 :(得分:1)
选择是:
Set set = new TreeSet();
根据doc:
元素按照它们的自然顺序排序,或者用 比较器在创建时设置,具体取决于哪个 使用构造函数。
因此,这是正确答案,因为插入后自然排序为[1,2]
。
Set set = new HashSet();
HashSet
未订购,因此也不保证自然排序。这不是正确答案。
Set set = new SortedSet();
SortedSet是一个界面。
List set = new SortedList(); 由于显而易见的原因,这绝对不是正确答案。
Set set = new LinkedHashSet();
Set接口的哈希表和链表实现,具有可预测的迭代顺序。在这种情况下,输出将是[2,1]
。
答案 2 :(得分:1)
- 醇>
TreeSet
是的,因为2
是一个有序集合,密钥1
和1
的自然顺序为2
,Set set = new HashSet();
。
- 醇>
HashSet
否Set set = new SortedSet();
不保证任何订单。
- 醇>
SortedSet
编译错误:List set = new SortedList();
是一个接口,无法实例化。
- 醇>
SortedList
编译错误:Java中没有标准Set set = new LinkedHashSet();
类。
- 醇>
2
订单保证为1
和String separator = System.lineSeparator();
display.setText(manu + separator + brand + separator + year + separator + price);
(广告订单)。