简体   繁体   English

Java获取不在arraylist中的元素

[英]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 . 我想补充凡在用户MembersArray但不是在membersAvailableArray

membersAvailableArray = all members in the class. MembersAvailableArray =该类中的所有成员。
MembersArray = all members MembersArray =所有成员

Im trying to get all members that are in MembersArray but not membersAvailableArray 我正在尝试获取MembersArray所有成员,但不是MembersArray所有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);

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. 现在, membersToAdd具有您需要添加的所有成员。


If you happen to have Java 8, there is an even simpler way to do this: 如果您碰巧拥有Java 8,则有一种更简单的方法可以做到这一点:

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

try this tricky way, add all to an ArrayList and remove those you do not want 尝试这种棘手的方法,将所有内容添加到ArrayList然后删除不需要的内容

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM