这是我的代码。我为邋iness道歉,但基本上它应该做的是模拟交换机使用的后向学习算法。 handleInput方法接收src和dest MAC地址以及端口号,并将src MAC和port#作为HashMaps添加到ArrayList中。整个方法现在没用,因为由于某些原因,没有HashMaps保留在ArrayList中。非常感谢任何帮助!
public class Switching {
ArrayList<HashMap> switchTable = new ArrayList<HashMap>();
public String handleInput(String srcMacAddress, int portNumber, String destMacAddress){
String output = "";
HashMap tableEntry = new HashMap();
tableEntry.put(srcMacAddress, portNumber);
for (HashMap hm : switchTable) {
if (hm.containsKey(destMacAddress)) {
output += hm.get(destMacAddress).toString();
} else {
output += "Ports flooded";
}
}
switchTable.add(tableEntry);
return output;
}
public ArrayList<HashMap> getTable(){
return switchTable;
}
public class SwitchingTests {
@Test
public void testSwitching(){
new Switching().handleInput("123456", 12, "abcdef");
ArrayList<HashMap> switchingTable = new Switching().getTable();
Assert.assertEquals(switchingTable.toString(), "[{123456=12}]");
}
}
答案 0 :(得分:1)
您正在创建一个Switching
对象并在其上调用handleInput(...)
,然后继续创建一个新的Switching
对象并获取其表格。
您需要从已创建的表格中获取该表格。
public class SwitchingTests {
@Test
public void testSwitching(){
Switching switching = new Switching();
switching.handleInput("123456", 12, "abcdef");
ArrayList<HashMap> switchingTable = switching.getTable();
Assert.assertEquals(switchingTable.toString(), "[{123456=12}]");
}
}
答案 1 :(得分:0)
在handleInput方法中,您正在创建新的switchTable。
你要做的就是改变你的路线
switchTable = new arrayList()to switchTable = getTable();