java - 如何将三个不同的集合迭代在一起

标签 java data-structures

我有三个系列, 前两个是引用数据,第三个是实际数据集。 我正在尝试检查引用日期集合中是否存在帐户数据。 如果它不存在, 我需要为该帐户添加当天的虚拟数据。 为了获得最佳性能,此处应遵循的最佳迭代逻辑是什么。 我无法将 List 数据集更改为 hashmap,它作为 List 给出。

这是一些代码:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class FindAccountExistForDay {

    public String userStart;
    public String accountId;
    public String genre;

    public static void main(String args[]){

        Set<String> accounts= new HashSet<String>();
        accounts.add("1");
        accounts.add("2");
        accounts.add("3");
        accounts.add("4");
        accounts.add("5");
        accounts.add("6");

        Set<String> dates= new HashSet<String>();
        dates.add("05032018");
        dates.add("05042018");
        dates.add("05052018");
        dates.add("05062018");
        dates.add("05072018");
        dates.add("05082018");
        dates.add("05092018");



        List<String[]> dataList= new ArrayList<String[]>();
        String[] strings = {"05032018", "1", "John"};
        String[] strings2 = {"05042018", "1", "John"};
        String[] strings3 = {"05062018", "3", "David"};
        String[] strings4 = {"05072018", "4", "Gilbert"};
        String[] strings5 = {"05082018", "5", "Mark"};
        String[] strings6 = {"05092018", "6", "Neil"};
        String[] strings7 = {"05032018", "2", "Dan"};

        dataList.add( strings);
        dataList.add( strings2);
        dataList.add( strings3);
        dataList.add( strings4);
        dataList.add( strings5);
        dataList.add( strings6);
        dataList.add( strings7);

    for (String date: dates){
        Set<Object> groupSet= new HashSet<Object>();
            for (String acct: accounts){
                while(dataList.iterator().hasNext()){
                    //do the logic here?
              } 
            }
            System.out.println("date:"+ date +":"+ groupSet);
        }
    }   
}

最佳答案

这是你要找的吗?

for (final String[] strs : dataList) {
   final String date = strs[0];

   if (!dates.contains(date)) {

   }
}

使用流 API (Java 8)

dataList.stream().filter(strs -> !dates.contains(strs[0]))

或更具表现力

dataList.stream().map(strs -> strings[0]).filter(date -> !dates.contains(date))

关于java - 如何将三个不同的集合迭代在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50529270/

相关文章:

python - 如何使用 Python 随机丢弃集合中的多个元素?

c - 有没有好的C语言集合库?

algorithm - 排序值的红黑树插入操作的行为

python - 从字符串列创建虚拟变量

java - 如果任务失败,如何执行 Ant 命令?

java - 收集器将流分成给定大小的 block

java - 使用 TcpOutboundGateway 和 CachingClientConnectionFactory 出现虚假错误 "Cannot correlate response - no pending reply"

Java - 按字典顺序查找下一个单词

java - 仅在第一页上显示使用 itext 生成的 pdf 中的页数

c++ - Valgrind 使用 shared_ptr c++11 指示内存泄漏