список Java пуст при возврате из метода - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть метод, который проходит через отсортированный массив и те отсортированные элементы списка в другой список с именем 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<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

из этого метода, я печатаю содержимое списка sortedFirstName списка и получаю правильный вывод, который комментируется в операторе печати.

У меня также есть метод 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 явно содержит элементы, добавленные к ней. Любая помощь будет принята

1 Ответ

0 голосов
/ 20 сентября 2019

Я заметил свою ошибку.Метод 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(); которая исправила мою проблему.Спасибо всем, кто прокомментировал, помогите мне с этим, очень признателен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...