我有一个方法,该方法循环遍历一个已排序的数组,并将那些已排序的List元素循环到另一个名为sortedFirstName的列表。这是方法代码。
public void sortFirstName(String input){
Collections.sort(fullName, new FirstNameComparator(input));
for(int i = 0;i<fullName.size();i++){
System.out.println("\n" + fullName.get(i));
sortedFirstName.add(fullName.get(i)); //adds to list fine
}
System.out.println("Sorted First Name" + sortedFirstName);
//prints desired output, [Jake Paul, Billy Robinson, Charles Princeton, John Paul, Karen Jacobs]
名字是一个列表,其实例化方式为List<String> fullName = new ArrayList<String>();
,并从方法listAllContacts中进行填充:
public void listAllContacts(){
for (Map.Entry<String,Person> entry : contacts.entrySet()) {
fullName.add(entry.getValue().fullName());
}
for (String contents : fullName) {
System.out.println("\n" + contents);
}
}
它由作为哈希图中对象字段的字符串填充
从此方法中,我打印list sortedFirstName列表的内容,并获得正确的输出,该输出在print语句下进行了注释。
我也有此get方法返回该列表
public List<String> getSortedFirstNames(){
return this.sortedFirstName;
}
在Junit类中,我像这样调用这些方法
@Test
public void sortFirst(){
ad1.sortFirstName("Jake");
List sorted = ad1.getSortedFirstNames();
List sortedList = new ArrayList();
sortedList.addAll(Arrays.asList("Jake Paul", "Billy Robinson", "Charles Princeton", "John Paul", "Karen Jacobs")); //expected output from boostrapped users
assertEquals(sortedList,sorted);
}
根据我的测试用例逻辑,应该是List sorted
包含元素[Jake Paul, Billy Robinson, Charles Princeton, John Paul, Karen Jacobs]
,但是当我将硬编码列表与sorted
比较时,它显示为空。我看不到任何问题,因为sortedFirstName
显然已添加了元素,将不胜感激
答案 0 :(得分:0)
我发现了我的错误。实际上需要使用listAllContacts
方法来填充fullName
变量。如果没有调用listAllContacts
方法,它就不会填充fullName
,也就不会填充sortedFirstName
列表。
这是我的新代码:
@Test
public void sortFirst(){
ad1.listAllContacts();
ad1.sortFirstName("Jake");
List sorted = ad1.getSortedFirstNames();
List sortedList = new ArrayList();
sortedList.addAll(Arrays.asList("Jake Paul", "Billy Robinson", "Charles Princeton", "John Paul", "Karen Jacobs")); //expected output from boostrapped users
assertEquals(sortedList,sorted);
}
请注意解决了我的问题的ad1.listAllContacts();
。感谢所有对此的评论,非常感谢。