Java ArrayList与Array。为什么一个工作,一个不工作?
我一直在尝试将一个较旧的赋值从数组切换到arraylist,但无论出于何种原因,当我将find方法修改为使用arraylist时,find方法无法工作。。似乎总是返回-1 这是一个大型类的一部分,所以除非完全必要,否则我不想包含所有内容,但我确实包含了声明,以防它们很重要:Java ArrayList与Array。为什么一个工作,一个不工作?,java,arrays,arraylist,Java,Arrays,Arraylist,我一直在尝试将一个较旧的赋值从数组切换到arraylist,但无论出于何种原因,当我将find方法修改为使用arraylist时,find方法无法工作。。似乎总是返回-1 这是一个大型类的一部分,所以除非完全必要,否则我不想包含所有内容,但我确实包含了声明,以防它们很重要: public class Switch { private SwitchEntry[] camTable; private int numEntries; private int maxEntries
public class Switch {
private SwitchEntry[] camTable;
private int numEntries;
private int maxEntries;
public Switch() {
camTable = new SwitchEntry[100]; // default value
numEntries = 0;
maxEntries = 100;
}
public Switch(int maxEntries) {
camTable = new SwitchEntry[maxEntries];
numEntries = 0;
this.maxEntries = maxEntries;
}
原件:
public int find (MACAddress source) {
int found = -1;
for (int i=0; i < numEntries; i++)
if (source.isEqual (camTable[i].getAddress())){
found = i;
break;
}
return found;
}
解决方案:
camTable.add(numEntries++, new SwitchEntry(inFrame.getSource(),inFrame.getPort()));
试试这个
public int find (MACAddress source) {
int found = -1;
ArrayList<MACAddress> camTable = new ArrayList<MACAddress>();
ListIterator<MACAddress> itr = camTable.listIterator();
while(itr.hasNext()){
MACAddress tempAdd = itr.next();
if(source.getAddress().equals(tempAdd.getAddress())){
found = itr.nextIndex();
return found;
}
return found;
}
我假设在ArrayList中存储MACAddress的对象。在这种情况下,如果我检查tempAdd.getAddress的source.getAddress相同,那么它将重新运行ArrayList的索引。这里ArrayList是局部变量,但您可以创建为类变量
public int find (MACAddress source) {
int found = -1;
ArrayList<MACAddress> camTable = new ArrayList<MACAddress>();
ListIterator<MACAddress> itr = camTable.listIterator();
while(itr.hasNext()){
MACAddress tempAdd = itr.next();
if(source.getAddress().equals(tempAdd.getAddress())){
found = itr.nextIndex();
return found;
}
return found;
}
我假设在ArrayList中存储MACAddress的对象。在这种情况下,如果我检查tempAdd.getAddress的source.getAddress相同,那么它将重新运行ArrayList的索引。这里ArrayList是局部变量,但您可以创建为类变量解决方案很简单,只是我的疏忽。我所要做的就是将numEntries添加回我的add语句,在从数组更改为arrayList之后,我忽略了修复它
解决方案现在贴在原来的问题上:解决方案是直截了当的,只是我的疏忽。我所要做的就是将numEntries添加回我的add语句,在从数组更改为arrayList之后,我忽略了修复它
解决方案现在发布在原始问题中:使用Contain method of collection.ArrayList
使用collection.ArrayList的Contain方法
arraylist在哪里?@VipinJain camTable是arralist@VipinJain在他的摄像机里,格蒂。。。我相信。你是如何获得numEntries知觉的?这也许是问题所在。还有什么是isEqual方法?@sentence您需要调试为什么它即将出现-1是包含将匹配的MACAddress对象的camTable,并且numEntries大于0 arraylist在哪里?@VipinJain camTable是arralist@VipinJain在他的摄像机里,格蒂。。。我相信。你是如何获得numEntries知觉的?这也许是问题所在。还有什么是isEqual方法?@sentence您需要调试为什么它会出现-1是camTable,包含将匹配的MACAddress对象,并且numEntries大于0我感谢您的帮助,但我只需将numEntries++添加到我的camTable.add中,就解决了这个问题。如果我有15个声望,你会看到一个上升的投票。。。不幸的是,我没有:非常感谢您的帮助,但我只需将numEntries++添加到我的camTable.add中,就解决了这个问题。如果我有15个声望,你会看到一个上升的投票。。。不幸的是,我没有:
public int find (MACAddress source) {
int found = -1;
ArrayList<MACAddress> camTable = new ArrayList<MACAddress>();
ListIterator<MACAddress> itr = camTable.listIterator();
while(itr.hasNext()){
MACAddress tempAdd = itr.next();
if(source.getAddress().equals(tempAdd.getAddress())){
found = itr.nextIndex();
return found;
}
return found;
}