user3494649
user3494649

Reputation: 3

Java get elements that are not in an arraylist

I am trying to add users to a model. I want to add all the users that are in MembersArray but not in membersAvailableArray.

membersAvailableArray = all members in the class.
MembersArray = all members

Im trying to get all members that are in MembersArray but not membersAvailableArray

DefaultListModel<String> model2 = new DefaultListModel<>();

       for(Member allMems: MembersArray)
       {
             for(Member mems: membersAvailableArray)
             {

                 if(!allMems.getUsername().equals(mems.getUsername()))
                 {
                     model2.addElement(allMems.getFirstName() + " " + allMems.getLastName());
                 }


             }
       }
       availableMembersJList.setModel(model2);

Upvotes: 0

Views: 56

Answers (2)

AJMansfield
AJMansfield

Reputation: 4129

You do not need any looping here, just some good old "All" operations:

ArrayList<Member> membersToAdd = members.clone();
membersToAdd.removeAll(availableMembers);

membersToAdd now has all the members you need to add.


If you happen to have Java 8, there is an even simpler way to do this:

members.stream()
        .filter(p->!availableMembers.contains(p))
        .forEach(p->model2.addElement(p));

Upvotes: 1

Farnabaz
Farnabaz

Reputation: 4066

try this tricky way, add all to an ArrayList and remove those you do not want

ArrayList<Member> tmp = new ArrayList<Member>();
tmp.addAll(MembersArray);
tmp.removeAll(membersAvailableArray);
for(Member allMems: tmp){
    model2.addElement(allMems.getFirstName() + " " + allMems.getLastName());
}

Upvotes: 0

Related Questions