2016-01-06 100 views
1

我有一个列表,它可能有最多2个值或最小0个值。现在我需要将第一个项目值和第二个项目值设置为我的pojo类。在java for each循环中获取值时发生

List<student> studentList = studentRepository.findById(idval); 


studentList.forEach(student -> { 

      st.setStartTime(student.getStartTime()); // fetch from 1st item 
      st.setEndTime(student.getEndTime()); // fetch from 1st item 
      st.setNextStartTime(student.getStartTime()); // fetch from 2nd item 
}); 

这里我需要为我的studentList pojo设置数值。在该pojo中,我需要设置3个属性,其中前两个属性值来自列表的第一个项目,第三个属性值来自列表的第二个项目。

任何人都可以提出一些好的方法来做同样的事情。

编辑: 我有一个列表(studentList),它有两个学生类对象项目。 (假设列表中有studentA和studentB信息)。现在我需要迭代studentList并将值设置为一个pojo(st)。在st pojo我有3个属性在那里。在这里我需要用studentA信息设置前两个属性值,用studentB信息设置第三个属性值。

+2

您可以编辑您的问题补充一些细节?目前还不清楚...... –

+0

用编辑更新了我的问题 – Vinod

+1

你为什么用第二个学生的数据覆盖st?为什么不从名单中获得第二名学生?或者你是否想要迎合1个学生的案例? – sisyphus

回答

2

我能为指数的foreach做的最好的方法是使用Intstream

List<student> studentList = studentRepository.findById(idval); 

IntStream.range(0, adpodList.size()).forEach(index -> { 
      if(index == 0) 
      { 
st.setStartTime(studentList.get(index).getStartTime()); // fetch from 1st item 
st.setEndTime(studentList.get(index).getEndTime()); // fetch from 1st item 
} 
else if(index == 1) 
      { 
st.setNextStartTime(studentList.get(index).getStartTime()); // fetch from 2nd item 
}}); 
1

什么

for (int i=0 ; i<studentList.length-1 ; i++) { 
    Student next = studentList.get(i+1); 
    studentList.get(i).setNextStartTime(next.getStartTime()); 
} 
1

如果你知道你有最多2倍的值,你可以检查if(studentList.size()>1)有2个值,并与studentList.get(0)studentList.get(1)设置的st值。

我希望它有帮助。

3

在我看来,这不是一个适合迭代的候选人 - 你没有在集合中的每个元素上做与相同的事情,并且此外,对于'empty集合'的情况下,而不是'非空集合'的情况。

我会去这个...

List<student> studentList = studentRepository.findById(idval); 
if (studentList.size() == 2) { 
    st.setStartTime(studentList.get(0).getStartTime()); // fetch from 1st item 
    st.setEndTime(student.get(0).getEndTime()); // fetch from 1st item 
    st.setNextStartTime(student.get(1).getStartTime()); // fetch from 2nd item 
} 

它比环或集合转型更具表现力,因为你不是真的想这样做无论是。

警告: - 你可能要处理size() == 0size < 2size > 2案件,除非你能得到你的版本库返回一个集合类型,真正使该尺寸保证你。