【问题标题】:Declaring an ArrayList that has an array for Java声明一个包含 Java 数组的 ArrayList
【发布时间】:2012-11-16 12:58:28
【问题描述】:

基本上,我创建了一个包含整数和浮点数的新类,并将其制成一个数组,这样我的数组就可以有多个数据类型:

public class LibRecord {
    // values for each libary user
    public int number;
    public int issued;
    public int maxLoans;
    public float fines;
    public String name;       
}

private LibRecord[] item = new LibRecord[maxUsers];

我需要把它变成一个数组列表,这样我就可以删除、添加和插入值,每次我尝试创建一个名为“item”的数组列表时,编译器都会告诉我这个名称已经被使用过。我该怎么办?我如何让这个程序工作,以便我可以调用 ArrayList 中的方法?

【问题讨论】:

  • 我投了反对票,因为您的问题没有证明您之前的任何研究。 Internet 上的许多站点都引用了创建 ArrayList 所需的语法。并且编译器消息已经明确告诉你出了什么问题!

标签: java arrays arraylist


【解决方案1】:

正如编译器清楚地告诉你的那样,你不能创建两个同名的字段。

您需要使用不同的名称。 (或者去掉第一个字段)

【讨论】:

    【解决方案2】:

    只需替换您的:

    private LibRecord[] item = new LibRecord[maxUsers];
    

    与:

    private List<LibRecord> users = new ArrayList<LibRecord>(maxUsers);
    

    【讨论】:

    • 值得注意的是,您也可以通过调用new ArrayList&lt;LibRecord&gt;() 来构建。通过提供一个整数值 (maxUsers),您可以建议列表的初始容量,但这不是必需的。
    • @DuncanJones 是的,这不是必需的,但如果您事先知道要使用的元素数量,这是一个很好的做法,因为它不必重新分配其内部结构。
    • 我完全同意!我只是不希望 OP 认为 ArrayLists 必须 以这种方式构造(或者得到任何关于它们是固定长度或类似的有趣想法)。
    • 谢谢,我试过了,它有效!但我试图使用 .get() 方法。我调用了arrayList itemList 并做了, item = newLibRecord();编译器说找不到变量.get(int)。基本上,我希望能够通过输入索引号从数组列表中获取特定数组,但我遇到了一个大问题。
    • @Oyinlola 为了获得一个元素,您还需要指定列表,例如:users.get(i) 其中i 是索引。
    【解决方案3】:

    确保在同一范围内没有两个名为 item 的变量。

    或者将private LibRecord[] item = new LibRecord[maxUsers];中的item重命名为items

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 2013-09-19
      • 2018-11-17
      • 2013-02-15
      • 1970-01-01
      • 2016-11-05
      • 1970-01-01
      相关资源
      最近更新 更多