java Pair 和 ArrayList 问题

标签 java

我已经问过这个问题,并且我还有关于使用的其他问题 我自己做的课。 请参阅下面的代码。

  import java.util.*;

    class Pair{
      int toWhere;
      int weight;
    }

    public class Test{
      public static void main(String[] args){
        ArrayList[] arr = new ArrayList[2];
        Pair p = new Pair();

        for(int i=0; i<arr.length; i++)
          arr[i] = new ArrayList<Pair>();

        p.toWhere = 1;
        p.weight = 2;
        arr[0].add(p);
        System.out.println(p); // gives me Pair@525483cd
        System.out.println(arr[0].get(0)); // gives me exactly the same, Pair@525483cd
        System.out.println(p.toWhere); // gives me no error, and is 1
        System.out.println(arr[0].get(0).toWhere); // gives me an error
      } 
    }

我的问题是这样的。 p 和 arr[0].get(0) 的值(这是地址?我猜)是相同的。 但为什么 p.toWhere 给我准确的值并且 arr[0].get(0).toWhere 没有吗?

最佳答案

这是因为编译器不知道arrArrayList of Pair的数组。您需要输入 arr:

List<Pair>[] arr = new ArrayList[2];

现在,当您使用 arr[0].get(0) 时,编译器知道 get 返回一个 Pair (而不是 Object (如您的代码中所示),因此 Pair 的方法可用。

关于java Pair 和 ArrayList 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6894283/

相关文章:

Java - 如何使用Gson解析json文件

java - 使用线程发出数据库请求

大写字母的 Java 正则表达式

java - 将原始 int 数组转换为列表

java - 为什么使用 onPrepareOptionsMenu 创建一个布局文件出现在屏幕顶部但运行时出现在底部的菜单?

java - 在android中安排mediaplayer的执行

java - 从 php 代码运行 -jar 文件

适用于Android的JAVA : improper use of "this" constructor causing issues with external class method calls

java - java 中的 unsigned long,使用 BigInteger 进行算术运算,但 BigInteger.toByteArray 返回 14 个字节而不是 8 个字节

java - DOM4J Element.attributes().containsAll() 返回意外值