LinkedList数组的setter和getter

时间:2014-05-01 16:08:27

标签: java

我有一个名为Entries的类,它包含我的构造函数及其getter和setter。

在新课程中,我有:

private LinkedList<Entry>[] Entries = new LinkedList[26];

public void changeNumber(String number, String numberChange) {
  for (int i = 0; i < myEntries.length; i++){


        if (myEntries[i].getNumber().equals(number)){
            myEntries[i].setNumber(numberChange);
            break;
        }
    }
}

但是,我收到了我的安装者和吸气剂的错误。当我使用直线阵列或直线LinkedList时,这不会发生,因为我已经让这个方法适用于两个不同类中的两个。

我收到的错误消息是

  

对于LinkedList类型,方法getNumber()未定义   并且类型为LinkedList

的方法getNumber()未定义

我不明白为什么他们是未定义的,因为当我尝试为直Array和纯LinkedList做同样的方法时,他们已经处理得很好并且运行正常。

如果有人有任何建议,我会非常感激。

3 个答案:

答案 0 :(得分:2)

密切关注您正在迭代的数据类型。由于myEntries被定义为LinkedList<Entry>[],因此当您遍历数组时,您将抽出一个LinkedList<Entry>个。{/ p>

你似乎不想想要数组;相反,只是直接迭代列表元素:

LinkedList<Entry> myEntries = new LinkedList<>();

for(Entry entry : myEntries) {
    if(entry.equals(number) {
        // logic
    }
}

答案 1 :(得分:1)

myEntries [i]返回一个LinkedList,它没有setNumber方法。您需要从列表中获取Entry,然后调用这些方法。

myEntries [I]获得(指数).setNumber();或myEntries [i] .getFirst()。setNumber();等

答案 2 :(得分:1)

您正试图在getNumber()个实例上调用您的访问者/变更者(setNumber&amp; LinkedList),因为LinkedList没有这样的方法报告错误。

因此要么使用LinkedList方法访问某个get()项,该方法将返回一个Entry对象,您可以在其上调用您的setter和getter:

public void changeNumber(String number, String numberChange) {
  int index = 0; //not sure what this index should be in your case
  for (int i = 0; i < myEntries.length; i++){
    if (myEntries[i].get(index).getNumber().equals(number)){
      myEntries[i].get(index).setNumber(numberChange);
      break;
    }
  }
}

或者更好的是,如果您不需要LinkedList,可能值得放弃您的设计,只创建Array Entry

private Entry[] entries = new Entry[26];

然后您的changeNumber()方法符合条件:

public void changeNumber(String number, String numberChange) {
  for (int i = 0; i < myEntries.length; i++){
    if (myEntries[i].getNumber().equals(number)){
      myEntries[i].setNumber(numberChange);
      break;
    }
  }
}