Java 过滤阵列列表
我有两个数组 票和过滤袋 我想退回不包含filterTickets会员的新票证。 我使用此代码,但过滤器不工作Java 过滤阵列列表,java,Java,我有两个数组 票和过滤袋 我想退回不包含filterTickets会员的新票证。 我使用此代码,但过滤器不工作 Lista=newarraylist(); for(字符串:ticketsFilter){ 票(票:票){ if(ticket.getTicketId().equals(string)) a、 加(票); } } 根据您的描述,您应该有一个filterTickets,它是一个字符串列表,然后您可以使用以下代码检查filterTickets是否包含ticketId: List<S
Lista=newarraylist();
for(字符串:ticketsFilter){
票(票:票){
if(ticket.getTicketId().equals(string))
a、 加(票);
}
}
根据您的描述,您应该有一个filterTickets,它是一个字符串列表,然后您可以使用以下代码检查filterTickets是否包含ticketId:
List<String> ticketsFilter = new ArrayList<>();
...
if(!ticketsFilter.contains(ticket.getTicketId())){
a.add(ticket);
}
List ticketsFilter=new ArrayList();
...
如果(!ticketsFilter.contains(ticket.getTicketId())){
a、 加(票);
}
使用流API的Java 8解决方案:
List<Ticket> a = tickets.stream()
.filter(e->!ticketsFilter.contains(e.getTicketId()))
.collect(Collectors.toList());
List a=tickets.stream()
.filter(e->!ticketsFilter.contains(e.getTicketId()))
.collect(Collectors.toList());
我以为如果ticketsFilter
列表中没有的话,您想添加到a
。无论如何,翻转两个循环,然后用调用contains
替换内部循环。这将使您:for(Ticket-Ticket:tickets){if(!ticketsFilter.contains(Ticket.getTicketId()){a.add(Ticket);}}
——为了获得更好的性能,ticketsFilter
应该是一个集,不是一个列表
。我也使用它,但它返回所有不带过滤器的成员。我还使用了一个8路列表filteredTickets=tickets.stream().filter(t->tickets filter.stream().anyMatch(s->s.equals(t.getTicketId()).collect(Collectors.toList());但它是否支持API 19,因为在android studio中,当我使用它时,信息会说调用API24@Andrinovariswanto你的问题甚至没有提到这是针对Android的,所以这个答案与当前的问题相关。啊,谢谢你,最好使用Set ticketsFilter=new HashSet();
Set
服务包含的算法比列表的任何实现都要快(此处为常数时间)。请将您的代码粘贴到此处或更新问题中,好吗?这应该可以帮助我理解您的问题