簡體   English   中英

從方法返回時 java 列表為空

[英]java list empty when returning from method

我有一個方法可以遍歷排序的數組和排序的列表元素到另一個名為 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]

FirstName 是一個 List 並且像這樣被實例化 - 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);         
      }
    }

它由字符串填充,這些字符串是 hashmap 中 object 的字段

通過這種方法,我打印 list sortedFirstName list 的內容並得到正確的 output ,它在 print 語句下被注釋。

我也有這個返回該列表的 get 方法

public List<String> getSortedFirstNames(){
        return this.sortedFirstName;
    }

在我的 Junit class 我這樣稱呼這些方法

@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清楚地添加了元素,任何幫助將不勝感激

我發現了我的錯誤。 實際填充fullName變量需要listAllContacts方法。 如果沒有調用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(); 這解決了我的問題。 感謝所有評論的人幫助我解決這個問題,非常感謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM