2014-03-02 71 views
-4

我想要給我的方法之一返回地圖列表。如何在java中列出<Map <String,String >>?

List<Map<String, String>> mappings = TestUtils.getMappings(maps, debug); 

System.out.println(mappings); 

下面是我得到的輸出中 - 我想看看每個地圖是否有正確的價值觀或

[{dc1=h1, dc2=h2, dc3=h3}, 
{dc1=h4, dc2=h5, dc3=h6}, 
{dc1=h7, dc2=h8, dc3=h9}, 
{dc1=h10, dc2=h11, dc3=h1}, 
{dc1=h2, dc2=h1, dc3=h4}, 
{dc1=h5, dc2=h4, dc3=h7}, 
{dc1=h8, dc2=h7, dc3=h10}, 
{dc1=h11, dc2=h10, dc3=h2}, 
{dc1=h3, dc2=h6, dc3=h8}, 
{dc1=h9, dc2=h3, dc3=h5}, 
{dc1=h6, dc2=h9, dc3=h11}] 

-

[{dc1=h1, dc2=h2, dc3=h3}, 
{dc1=h4, dc2=h5, dc3=h6}, 
{dc1=h7, dc2=h8, dc3=h9}, 
{dc1=h10, dc2=h11, dc3=h1}, I am trying to jUnit one of my method which returns `List of Map<String, String>` - 

List<Map<String, String>> mappings = TestUtils.getMappings(maps, debug); 

System.out.println(mappings); 

下面是我得到的輸出中不..總之每個地圖都會有這樣的值 -

dc1=h9, dc2=h3, dc3=h5

所以我需要junit,dc1dc2dc3的值在相同的地圖中彼此不同。

因此,如果地圖是這樣的 -

dc1=h1, dc2=h2, dc3=h1

然後我的說法應該失敗,因爲DC1的價值是存在的DC3以及..

現在,我不知道是什麼最好的jUnit這個? {dc1 = h2,dc2 = h7,dc3 = h10}, {dc1 = h11} ,dc2 = h10,dc3 = h2}, {dc1 = h3,dc2 = h6,dc3 = h8}, {dc1 = h9,dc2 = h3,dc3 = h5}, {dc1 = h6,dc2 = h9, dc3 = h11}]

現在我不確定什麼是最好的jUnit這個?其實我做的JUnit的地圖面臨的問題

我想看看每個地圖是否有正確的價值觀或不..總之每個地圖都會有這樣的價值觀 -

dc1=h9, dc2=h3, dc3=h5

所以我需要junit,dc1dc2dc3的值在地圖上各不相同。

因此,如果地圖是這樣的 -

dc1=h1, dc2=h2, dc3=h1

然後我的說法應該失敗,因爲DC1的價值是存在的DC3以及..

UPDATE: -

對於其他一些輸入,我會看到這樣的輸出 -

[{dc1=h1, dc2=h2, dc3=h3}, 
{dc1=h2, dc2=h1}, 
{dc1=h3, dc2=h4, dc3=h2}, 
{dc2=h5, dc3=h1}, 
{dc2=h3}, 
{dc2=h6}, 
{dc2=h7}, 
{dc2=h8}, 
{dc2=h9}, 
{dc2=h10}, 
{dc2=h11}] 
+4

你試圖測試什麼?不要將junit用作動詞。 –

+0

剛剛更新了這個問題..對不起,我發佈這個問題還爲時過早..我忘了添加幾件事.. – AKIWEB

回答

2

您有地圖列表。每個地圖都有N個鍵,並且您聲明您要確保每個地圖中都沒有重複的值。

1)獲得每個地圖
2)實例化一個HashSet的值,並添加值
3)驗證該組的長度是N

+0

好邏輯..這工作正常,如果我有dc1,dc2,dc3進來輸出..但對於一些其他的輸入,我會在地圖中看到只有dc1,dc2 ..我用另一個輸出更新了我的問題。 – AKIWEB

+0

那麼顯然你需要在地圖中記錄**的初始值**,並將其與哈希集中的結果數進行比較。編輯用'N'替換'3' –

0

嘗試以下代碼:

驗證所有值是唯一的:

for(Map<String, String> eachMap : mapList) { 
     Collection<String> values = eachMap.values(); 
     Set<String> valuesAsSet = new HashSet<>(values); 
     assertEquals(values.size(), valuesAsSet.size()); 

    } 

如果您需要驗證順序:

for(Map<String, String> eachMap : mapList) { 
     Collection<String> values = eachMap.values(); 
     Set<String> valuesAsSet = new HashSet<>(values); 

     Iterator<String> expectedIt = values.iterator(); 
     Iterator<String> actualIt = valuesAsSet.iterator(); 

     boolean expectedHasNext = expectedIt.hasNext(); 
     boolean actualHasNext = actualIt.hasNext(); 

     // Iterators are consistent 
     assertEquals(expectedHasNext, actualHasNext); 
     if(expectedHasNext) { 
      if(expectedHasNext) { 
       String expected = expectedIt.next(); 
       String actual = actualIt.next(); 
       assertEquals(expected, actual); 
      } 
     } 
    } 
相關問題