Java 如何比较两个集合,然后使用组合字符串筛选到新集合?

Java 如何比较两个集合,然后使用组合字符串筛选到新集合?,java,hashset,Java,Hashset,我正在为Compare2Hashset构建一些简短的代码 集合1=noRek:[123456789212345678911234567890] 集合2=来源:[1234567890U0113,12345678904B0111,1234567890U0112, 12345678901B0111、1234567890U0115、1234567890U0114、12345678902B0113、, 12345678903B0111、1234567890U0111、1234567890B0111、123

我正在为Compare2Hashset构建一些简短的代码

集合1=noRek:[123456789212345678911234567890]

集合2=来源:[1234567890U0113,12345678904B0111,1234567890U0112, 12345678901B0111、1234567890U0115、1234567890U0114、12345678902B0113、, 12345678903B0111、1234567890U0111、1234567890B0111、12345678902B00112、, 1234567892B0111]

但实际输出与集合2相同

简单地说,我需要将集合2与组合进行比较,前10位是帐号,然后下一个字符1位是代码,然后数字的其余部分自动生成。也就是说,长度组合集合2是15位,组合集合1是10位,那么集合1是账号数据,我需要从集合2中的账号中获取所有交易

集合1是所有科目和科目的数据
集合2是事务组合的数据

您可以使用流和
过滤器

Set<String> diff1 = source.stream().filter(str -> {
    if (str.length() > 10) {
        String account = str.substring(0, 10);
        return noRek.contains(account);
    }
    return false;
}).collect(Collectors.toSet());
Set diff1=source.stream().filter(str->{
如果(str.length()>10){
字符串account=str.substring(0,10);
返回noRek.contains(帐户);
}
返回false;
}).collect(收集器.toSet());

集合
没有方法
子字符串
,请发布编译的代码。除此之外,您是否看过
Set
的文档?也许你可以通过
removeAll
retainal
来解决这个问题,这取决于你想要实现的目标。可能的重复是相同的,但我需要将第一组与组合进行比较,前10位是账号,下一个字符1位是代码,然后数字的其余部分自动生成。集合2是帐号的数据,我需要从集合2中的帐号中获取所有事务,我认为,我必须使用集合1中的子字符串循环集合2,然后逐个验证,如果我这样做了,那么如果文件较大,则需要高nemory
    SET 3 = [1234567890U0111, 1234567890U0112, 1234567890U0113,1234567890U0114, 1234567890U0115, 1234567890B0111, 1234567891B0111, 1234567892B0113, 1234567892B0112, 1234567892B0111]
Set<String> diff1 = source.stream().filter(str -> {
    if (str.length() > 10) {
        String account = str.substring(0, 10);
        return noRek.contains(account);
    }
    return false;
}).collect(Collectors.toSet());