【问题标题】:Add Input to TupleList向 TupleList 添加输入
【发布时间】:2016-11-28 09:31:20
【问题描述】:

我为一个包含 2 个条目的新列表创建了一个新类:

public class NodeList<T, I> {
        public final T type;
        public final I id;

        public NodeList (T type, I id){
            this.type = type;
            this.id = id;
        }

        public T getT() { return type; }
        public I getI() { return id; }
}

现在我想在另一个类中创建这个列表(我的 javafx BorderPane 的控制器)

List<NodeList> nodeList = new ArrayList<NodeList>();

我想在这个列表中添加两个字符串。

public void addNodeList(){
    String a = "a";
    String b = "b";
    nodeList.add(a, b);
}

我做错了什么?

【问题讨论】:

  • 您面临什么问题?你得到什么错误?给我们看看。
  • 我已经有了解决办法

标签: java list tuples


【解决方案1】:

Java 中没有“隐式构造函数”。你必须显式地实例化一个新的NodeList 来保存这两个字符串:

public void addNodeList(){
    String a = "a";
    String b = "b";
    nodeList.add(new NodeList<>(a, b));
    // Here -----^
}

【讨论】:

  • 我怎样才能得到像所有“a”一样的东西?
  • 或者我怎样才能得到第一个?我想遍历所有内容。我尝试 String func = ViewController.nodeList.getT(); 但它说 getT() 未定义 List
【解决方案2】:

您需要创建一个NodeList 类型的新对象。 List 没有直接接受两个字符串的 add 方法。要修复它,请执行以下操作:

public void addNodeList(){
    String a = "a";
    String b = "b";
    nodeList.add(new NodeList<String, String>(a, b));
}

【讨论】:

  • 我怎样才能得到像所有“a”一样的东西?
  • 或者我怎样才能得到第一个?我想遍历所有内容。我尝试 String func = ViewController.nodeList.getT(); 但它说 getT() 未定义 List
  • 您需要使用get(int index) 函数从列表中检索一个元素。要检索列表的第一个元素,请执行以下操作:String func = ViewController.nodeList.get(0).getT();。此外,您需要定义列表的完整类型,例如 List&lt;NodeList&lt;String, String&gt;&gt; nodeList = new ArrayList&lt;NodeList&lt;String, String&gt;&gt;(); 以从中检索字符串。
  • 你遗漏了一些东西 - 字段 nodeList 的声明不正确,应该是 List&lt;NodeList&lt;String,String&gt;&gt; nodeList = new ArrayList&lt;NodeList&lt;String,String&gt;&gt;(); (当然,对于不是列表的东西,类名 NodeList 将是不正确 - 建议称它为Node)
  • 阅读整条评论。我在最后写了那个。不过我同意这个名字:)
猜你喜欢
  • 2020-07-12
  • 2013-01-01
  • 2011-07-11
  • 2021-12-13
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
相关资源
最近更新 更多