因此,我正在从事一个面向对象的java项目,该项目涉及航运公司的负载管理。旅行有起源、地点、内容和目的地。一次旅行有一个或多个集装箱,可以监测容器内的温度、湿度和压力。因此,我想得到所有的旅程中,一个给定的容器已经在(容器的历史)。用于任何给定旅程的所有容器都存储在该旅程的"containerList“(arraylist)中。
因此,"containerHistory“应该通过arraylist "history"(which包含已完成的旅程来查看这个方法,对于"history”数组列表中的每一次旅程,应该查看每个给定旅程的数组列表"containerList“,以及数组列表中的每个容器,"containerList”应该比较给定容器的id和我们正在寻找的容器(在下面的代码中,这个id将由字符串"search“表示)。
public ArrayList<Journey> containerHistory(String search, ArrayList<Journey> history){
ArrayList<Journey> containerhistorylist = new ArrayList<Journey>();
for(Journey j : history) {
for(Container c : j.getContainerList()) {
if (c.getContainerId().contentEquals(search)) {
containerhistorylist.add(j);
}
}
}
return containerhistorylist;
}任何关于如何改进这段代码或其他方法的想法都将受到极大的赞赏。
发布于 2020-04-08 18:32:59
如果您习惯于使用Java 8流,那么可以使用以下代码:
List<Journey> containerhistorylist = history
.stream()
.filter(j -> j.getContainerList()
.stream()
.anyMatch(c -> c.getContainerId().contentEquals(search)))
.collect(Collectors.toList());https://stackoverflow.com/questions/61107450
复制相似问题