所以,我有方法:
public List<Map.Entry<String, Integer>> sortMap(HashMap<String, Integer> map) {
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
list.sort((o1, o2) -> {
int value = o2.getValue().compareTo(o1.getValue());
if (value != 0) {
return value;
}
return o1.getKey().compareTo(o2.getKey());
});
return list;
}
我需要為他做一個 JUnit 測驗。實際上,我開始撰寫代碼,但我不知道如何正確完成它
@Test
public void shouldReturnCurrentList() {
Object object = new Object();
List<Map.Entry<String, Integer>> testList = new ArrayList<>(testMap.entrySet());
testMap.put("One", 1);
testMap.put("Two", 2);
testMap.put("Three", 3);
testMap.put("Four", 4);
object.sortMap(testMap);
}
uj5u.com熱心網友回復:
創建地圖。在這種情況下,我添加了一個具有重復值的元素。
Map<String,Integer> map = new HashMap<>();
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
map.put("Four", 4);
map.put("AnotherFour", 4);
現在呼叫該方法
List<Map.Entry<String, Integer>> actual = SUT.sortMap(map);
現在根據我們期望的 Map 處理方式來測驗順序。對于輸出映射,鍵的順序應為“一”、“二”、“三”、“另一個四”、“四”,值的順序應為 1、2、3、4、4。
Assert.assertEquals("One", actual.get(0).getKey());
Assert.assertEquals(1, actual.get(0).getValue());
Assert.assertEquals("Two", actual.get(1).getKey());
Assert.assertEquals(2, actual.get(1).getValue());
Assert.assertEquals("Three", actual.get(2).getKey());
Assert.assertEquals(3, actual.get(2).getValue());
Assert.assertEquals("AnotherFour", actual.get(3).getKey());
Assert.assertEquals(4, actual.get(3).getValue());
Assert.assertEquals("Four", actual.get(4).getKey());
Assert.assertEquals(4, actual.get(4).getValue());
uj5u.com熱心網友回復:
地圖有更方便的方式。
assertThat(testList)
.contains(Assertions.entry("one", 1), Assertions.entry("two", 2));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/483079.html
