ArrayList <hashmap>在测试和UI中返回空?

时间:2016-04-07 19:21:06

标签: java arraylist hashmap

这是我的代码。我为邋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}]");
    }
}

2 个答案:

答案 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();