Java 条目列表,如何添加新条目?
在Java中,我实现了以下功能:Java 条目列表,如何添加新条目?,java,Java,在Java中,我实现了以下功能: List<Entry<String, Integer>> listObjects = new ArrayList<Entry<String, Integer>>(); List listObjects=new ArrayList(); 但是如何添加新条目 因为它不适用于:listObjects.add(newentry()) 提前感谢。也许listObjects.add(新条目(“abc”,1))?泛型指定类型
List<Entry<String, Integer>> listObjects = new ArrayList<Entry<String, Integer>>();
List listObjects=new ArrayList();
但是如何添加新条目
因为它不适用于:listObjects.add(newentry())代码>
提前感谢。也许listObjects.add(新条目(“abc”,1))代码>?泛型指定类型(String
,Integer
),而不是值(abc
,1
)
编辑-注意,后来添加了条目
实际上是Map.Entry
,因此您需要创建一个Map.Entry
的实现,稍后将其实例化,正如所选答案所解释的。Entry
是一个参数化类,您需要使用构造函数创建Entry
的实例(典型方式)
在不知道条目的实现情况下
:这可能已经起作用了(至少它显示了它通常的工作方式):
你是说?这是一个接口(因此,如果没有实现类,就无法实例化)<代码>条目
实例通常仅由实现创建,并且仅通过
当然,由于它是一个接口,您可以添加自己的实现,如下所示:
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;
}
}
公共类MyEntry实现入口{
私钥;
私人价值;
公共MyEntry(最终K密钥){
this.key=key;
}
公共MyEntry(最终K键,最终V值){
this.key=key;
这个值=值;
}
公共K getKey(){
返回键;
}
public V getValue(){
返回值;
}
公共V设置值(最终V值){
最终V oldValue=此值;
这个值=值;
返回旧值;
}
}
这样你就可以做listObjects.add(newmyentry(“abc”,1))
但在地图上下文之外,这并没有真正意义。使用现成的条目实现的一种方法是
类似这样的listObjects.add(Maps.immutableEntry(“abc”,1))代码>我知道这是一个非常旧的线程,但您可以按如下方式执行:
listObjects.add(new java.util.AbstractMap.SimpleEntry<String, Integer>("abc", 1));
listObjects.add(newjava.util.AbstractMap.SimpleEntry(“abc”,1));
这可能会帮助像我这样的人,他最近正试图这样做
我希望它有帮助:-)所有问题都应该有预期行为和实际行为(您案例中产生的错误)。javac/Eclipse/NetBeans(或者JRE,如果它是运行时的东西)说的实际问题是什么?你能给出一个“简洁”的答案吗?什么是“不工作”实际上意味着什么?我不能创建一个新的条目对象!对于有相同问题的任何人,请确保选中问题.listObjects.add(新条目(“abc”,1));也可以。谢谢@尽管你是对的,但是最初的问题没有提到Map.Entry
;OP在给出答案后澄清了这一点;当然,在这种情况下,您必须实现Map.Entry
并实例化泛型误用非常明显,我没有想到:)删除我的answerGuava不能处理null元素。并非在所有情况下都有用。
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 java.util.AbstractMap.SimpleEntry<String, Integer>("abc", 1));