好的,所以基本上我试图在我的
中迭代对象File.Create("C:/temp/file1.txt");
DateTime start = DateTime.Now;
File.Create("C:/temp/file2.txt");
DateTime end = DateTime.Now;
foreach (FileInfo fi in new DirectoryInfo("C:/temp").GetFiles().Where(x => x.CreationTime >= start && x.CreationTime <= end))
{
// will only get file2.txt
}
并显示共享相同“位置”的每个人。该位置是在Temperatures类的构造函数中初始化的int变量:
private ArrayList<Temperatures> recordedTemperature;
如何遍历Temperatures ArrayList中的所有对象,找出具有匹配位置属性的对象并将其返回?
答案 0 :(得分:1)
您可以使用Java 8和流。
要过滤List
使用filter
List<Temperature> filtered = recordedTemperature.stream().filter(t -> t.getLocation() == 1).collect(Collectors.toList());
要按位置分组,请使用collect和groupingBy
Map<Integer, List<Temperature>> grouped = recordedTemperature.stream().collect(Collectors.groupingBy(Temperature::getLocation));
您将获得Map
,其中key是您的位置,而值是包含指定位置的Temperature
列表。
答案 1 :(得分:0)
您需要遍历列表并根据您的条件验证列表中的每个项目。在您的情况下,需要传递列表并标识所有唯一位置(例如将它们放在地图中),并为每个位置添加具有该位置的条目列表。
Map<Integer, List<Temperatures>> tempsByLocation = new HashMap<>();
for (Temperatures t : recordedTemperature) {
//1 check that there is such location
//2 if there is already, then append your location to the list at that location
//3 otherwise create the new key (new location) and add the new list containing only your temperature to it
}
答案 2 :(得分:0)
您可以尝试:
Map<Integer, ArrayList<Temperatures>> map = new HashMap<Integer, ArrayList<Temperatures>>(); //create a map, for all location => array of Temperatures objects with this location
for(Temperatures t: recordedTemperatures){
if(map.get(t.location)==null){
map.put(t.location, []); // if it is first Temperatures object with that location, add a new array for this location
}
map.put(t.location, map.get(t.location).push(t)); // get the Temperatures with this location and append the new Temperatures object
}
然后迭代这些地图以获得所有群组:
for (Map.Entry<Integer, ArrayList<Temperatures>>> entry : map.entrySet())
{
// entry.getKey() is the location
// entry.getValue() is the array of Temperatures objects with this location
}
请注意,我没有实现并试试这个,但它可能会起作用或给你一个想法。
答案 3 :(得分:0)
如果您尝试根据给定的temperatures
获取所有location
,您可以在 Java 8 中执行以下操作:
public List<Temperatures> getTemperaturesFromLocation(List<Temperatures> temperatures, int location) {
return temperatures
.stream()
.filter(t ->
t.getLocation() == location
)
.collect(Collectors.toList());
}
或使用常规循环/ if语句:
public List<Temperatures> getTemperaturesFromLocation(List<Temperatures> temperatures, int location) {
List<Temperatures> toReturn = new ArrayList<>();
for(Temperatures temperature : temperatures) {
if(temperature.getLocation() == location) {
toReturn.add(temperature);
}
}
return toReturn;
}