Список общих элементов в Java - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь распечатать общие элементы между двумя списками и когда я пытаюсь использовать retainAll ();это в основном пропускает все, что прошло.

    List<String> dblist = Arrays.asList(db);
    List<String> medlist = Arrays.asList(medication);

    //Get Meds in Database that Match Patient Meds 
    jTextArea3.append("\nMedications in dblist :"+"\n");
    for (int d =0; d<dblist.size(); d++){
        jTextArea3.append(dblist.get(d)+"\n");
    }       

    jTextArea3.append("\nMedications in medlist :"+"\n");
    for (int d =0; d<medlist.size(); d++){
        jTextArea3.append(medlist.get(d)+"\n");
    }    

    //dblist.retainAll(medlist);
    jTextArea3.append("\nMedications in both :"+"\n");
    for (int d =0; d<dblist.size(); d++){
        jTextArea3.append(dblist.get(d)+"\n");
    } 

Это выведет список содержимого dblist.get (d), но как только я раскомментирую dblist.retainAll (medlist), вывод прекратится в конце вывода medlist выше.

1 Ответ

0 голосов
/ 19 февраля 2019

Вы получили исключение UnsupportedOperationException.Из-за retainAll resize collection, в то время как Arrays.asList() возвращает не изменяемый размер.

Замените dblist инициализацию new ArrayList(Arrays.asList(db))

Но я не рекомендую использовать List в качестве аргумента в retainAll метод, это будет O (N ^ 2) сложность.Используйте HashSet для medlist, если порядок элементов не имеет значения.

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