您可以简单地使用以下特殊功能LinkedHashMap
:
Set<String> set = Collections.newSetFromMap(new LinkedHashMap<>(16, 0.75f, true));
set.add("one");
set.add("two");
set.add("three");
set.add("two");
System.out.println(set); // prints [one, three, two]
在 Oracle 的 JRE 中,无论如何LinkedHashSet
都支持 a LinkedHashMap
,因此没有太大的功能差异,但这里使用的特殊构造函数将 配置为在每次访问LinkedHashMap
时更改顺序,而不仅仅是在插入时。这听起来可能太多了,但实际上只会影响已包含的键(在 的意义上的值)的插入。返回的 不使用其他受影响的操作(即) 。Set
Map
get
Set
如果您不使用 Java 8,由于类型推断有限,您必须对编译器有所帮助:
Set<String> set
= Collections.newSetFromMap(new LinkedHashMap<String, Boolean>(16, 0.75f, true));
但功能是一样的。