设置<对象>vs列表<对象>?

我有一个对象,其中包含一个 id 和该 id 的一些属性。

public class Data {
    private String id;
    private String name;
    private String value;
}

目前我已在请求对象中将其定义为:

public class Request {
    private List<Data> dataList;
}

如果我知道我可能永远不会在请求中遇到相同的 id(内容),那么 List 与 Set 是否会有任何区别。

总的来说,对于这个用例,哪个更好?列表 vs 集合?

回答

List 和 Set 有什么区别吗

List并且Set有不同的语义。AList是允许重复条目的有序项目集合。ASet是一个无序的项目集合,不允许重复。(还有一些特殊的变体结合了排序和唯一性,如SortedSetNavigableSet

我知道我可能永远不会遇到相同的 id

Set默认情况下,您的对象equals方法确保了的唯一性。如果您希望您的Data对象“按 id”是唯一的,您必须在您的类中实现自定义equalshashCode方法Data来检查相等的 id。

总的来说,对于这个用例,哪个更好?

我在你的问题中看不到任何用例。

如果您需要唯一性,请使用Set. 如果您只需要一组项目,请使用List.

当然还有其他用例。例如,如果您需要检查您的集合是否已经包含一个项目。使用 aList您必须遍历所有元素并检查是否相等。例如,当使用 an 时,HashSet它只会计算hashCode您的对象的(equals然后进行检查)并得到答案,这对于大型集合来说要快得多。


以上是设置&lt;对象&gt;vs列表&lt;对象&gt;?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>