List<Entry<String, Integer>> listObjects = new ArrayList<Entry<String, Integer>>();
但是我该如何添加新的条目?
因为这个方法不起作用:listObjects.add(new Entry<"abc", 1>());
提前感谢。
List<Entry<String, Integer>> listObjects = new ArrayList<Entry<String, Integer>>();
但是我该如何添加新的条目?
因为这个方法不起作用:listObjects.add(new Entry<"abc", 1>());
提前感谢。
我知道这是一个比较旧的主题,但你可以按照以下方法实现:
listObjects.add(new java.util.AbstractMap.SimpleEntry<String, Integer>("abc", 1));
这可能会帮助像我这样最近试图做到这一点的人!
希望它有所帮助 :-)
你是指Map.Entry
吗?那是一个接口(所以你不能实例化它,除非有一个实现类,你可以在Java教程中了解接口)。Entry
实例通常只由 Map
实现创建,并且只通过 Map.entrySet()
公开。
当然,既然它是一个接口,你也可以添加自己的实现,就像这样:
public class MyEntry<K, V> implements Entry<K, V> {
private final K key;
private V value;
public MyEntry(final K key) {
this.key = key;
}
public MyEntry(final K key, final V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
public V getValue() {
return value;
}
public V setValue(final V value) {
final V oldValue = this.value;
this.value = value;
return oldValue;
}
}
这样你就可以执行 listObjects.add(new MyEntry<String,Integer>("abc", 1))
但在 map 上下文之外,这并没有什么意义。
Entry
是一个参数化类,你需要使用构造函数创建Entry
的实例(通常的方式)。
即使不知道Entry
的具体实现,以下方法也可以工作(至少它展示了通常的做法):
// create a list
List<Entry<String, Integer>> listObjects =
new ArrayList<Entry<String, Integer>>()
// create an instance of Entry
Entry<String, Integer> entry = new Entry<String, Integer>("abc", 1);
// add the instance of Entry to the list
listObjects.add(entry);
使用Map.Entry
有所不同(OP刚才提到,Entry
实际上是Map.Entry
)。我们无法创建Map.Entry
实例,通常是从现有的映射中获取它们:
Map<String, Integer> map = getMapFromSomewhere();
List<Map.Entry<String, Integer>> listObjects =
new ArrayList<Map.Entry<String, Integer>>();
for (Map.Entry<String, Integer> entry:map.entrySet())
listObjects.add(entry);
使用现成的Entry
实现的一种方法是使用Guava的Immutable Entry。像这样:listObjects.add(Maps.immutableEntry("abc",1));
或许可以使用 listObjects.add(new Entry<String, Integer>("abc", 1));
?泛型指定了类型 (String
, Integer
),而不是值 (abc
, 1
)。
编辑 - 注意后来补充说明,Entry
其实是 Map.Entry
,所以您需要创建一个 Map.Entry
的实现,正如选定答案所解释的那样。
Map.Entry
;OP稍后澄清了这一点,当答案已经给出时;当然,在这种情况下,你必须实现 Map.Entry
并实例化它。 - Miki