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