微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Foreach 循环以获取适当的 List

如何解决Foreach 循环以获取适当的 List

我有一个 Java 课程:

public class Process {

private String id;
private String name;
private Date date;
private String status;

// getterr and setters and constructor

在主类中,我需要像这样初始化对象:

List<Process> processList = new ArrayList<>();

    Process process1 = new Process();
    process1.setId("1111");
    process1.setName("Step one under first status");
    process1.setDate(new Date());
    process1.setStatus("");

    Process process2 = new Process();
    process2.setId("1111");
    process2.setName("Step two under first status");
    process2.setDate(new Date());
    process2.setStatus("");

    Process process3 = new Process();
    process3.setId("1111");
    process3.setName("");
    process3.setDate(new Date());
    process3.setStatus("Status One");

    Process process4 = new Process();
    process4.setId("1111");
    process4.setName("Step one under second status");
    process4.setDate(new Date());
    process4.setStatus("");

    Process process5 = new Process();
    process5.setId("1111");
    process5.setName("");
    process5.setDate(new Date());
    process5.setStatus("Status two");

    Process process6 = new Process();
    process6.setId("2222");
    process6.setName("Step one under first status");
    process6.setDate(new Date());
    process6.setStatus("");

    Process process7 = new Process();
    process7.setId("2222");
    process7.setName("Step two under first status");
    process7.setDate(new Date());
    process7.setStatus("");

    Process process8 = new Process();
    process8.setId("2222");
    process8.setName("");
    process8.setDate(new Date());
    process8.setStatus("Status One");

    processList.add(process1);
    processList.add(process2);
    processList.add(process3);
    processList.add(process4);
    processList.add(process5);
    processList.add(process6);
    processList.add(process7);
    processList.add(process8);

从该列表中,我需要获得一个包含如下对象的新列表:

一个对象(id = "1111",name = "Step one under first status",date,"Status One")

第二个对象(id = "1111",name = "第一个状态下的第二步","Status One")

第三个对象(id = "1111",name = "第二个状态下的第一步","状态二")

第四个对象(id = "2222",name = "第一个状态下的第一步","状态一")

第五个对象(id = "2222","状态一")

感谢您的帮助,抱歉英语不好(这不是我的母语):)

编辑:

嗨。我不需要删除项目。我需要将它们组合起来(例如 foreach 循环)以获取包含所有数据的项目。例如:process1(id = "1111")有名字但没有状态。 process3 (id ="1111") 状态为“状态一”但没有名称。所以结果需要是:第一个对象(id =“1111”,名称=“第一个状态下的第一步”,日期,“状态一”)

process2 (id = "1111") 也有名字,但没有状态。所以我需要将它们与 process3 (id="1111") 结合起来。结果将是:第二个对象(id =“1111”,名称 =“第一个状态下的第二步”,日期,“状态一”)...

process7 有另一个 id = "2222"。它有一个名称 =“第一个状态下的第二步”但没有状态,所以我需要将它们与具有状态的 process8 (id ="2222") 结合起来。结果将是:第五个对象(id = "2222",name = "Step 2 under first status","Status One")

解决方法

我不确定您的意思,但如果您想从列表中删除某些项目(状态 = ""):

processList.removeIf(e -> e.getStatus().equals("");

嗨。我不需要删除项目。我需要将它们组合起来(例如 foreach 循环)以获取包含所有数据的项目。例如:process1 (with id = "1111#) has name but it don't have status. process3 has status "Status One"但没有名字。所以结果需要是:第一个对象(id = "1111",name = "第一个状态下的第一步",date,"状态一")

process2 (id = "1111") 也有名字,但没有状态。所以我需要将它们与 process3 结合起来。结果将是:第二个对象(id =“1111”,名称 =“第一个状态下的第二步”,日期,“状态一”)...

process7 有另一个 id = "2222"。它有一个名称 =“第一个状态下的第二步”但没有状态,所以我需要将它们与具有状态的 process8 结合起来。结果将是:第五个对象(id = "2222",name = "Step 2 under first status","Status One")

,

好的,谢谢你的澄清,这看起来很简单:

List<Process> resultList = new ArrayList<Process>();

Iterator<Process> i = processList.iterator();
while (i.hasNext()) {
  Process p = i.next(); // must be called before you can call i.remove()

  if(p.getStatus().isEmpty()) {
    
    for (Process currentProcess : processList) {
      
      if(!currentProcess.getStatus().isEmpty()) {
        p.setStatus(currentProcess.getStatus());
        
        resultList.add(p);
        break;
      }
    
    }
  } 
   i.remove();
}   

System.out.println(resultList);

那么你应该有:

流程 [名称=第一个状态下的第一步,id=1111,日期=2021 年 2 月 9 日星期二 19:32:04 CET,状态=状态一], 流程 [名称=第一个状态下的第二步,id=1111,日期=2021 年 2 月 9 日星期二 19:32:04 CET,状态=状态一], 流程 [名称=第二状态下的第一步,id=1111,日期=2021 年 2 月 9 日星期二 19:32:04 CET,状态=状态二], 流程 [名称=第一个状态下的第一步,id=2222,日期=2021 年 2 月 9 日星期二 19:32:04 CET,状态=状态一], 流程 [名称=第一个状态下的第二步,id=2222,日期=2021 年 2 月 9 日星期二 19:32:04 CET,状态=状态一]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。