我有一个列表,它可能有最多2个值或最小0个值。现在我需要将第一个项目值和第二个项目值设置为我的pojo类。
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信息设置第三个属性值。
答案 0 :(得分:3)
在我看来,这不适合迭代 - 你没有对集合中的每个元素做相同的事情,而且,你有不同的行为对于'空集合'案例而不是'非空集合'案例。
我会选择这个...
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() == 0
,size < 2
和size > 2
个案,除非您可以让您的存储库返回真正使该大小保证的集合类型你。
答案 1 :(得分: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
}});
答案 2 :(得分:1)
怎么样?
for (int i=0 ; i<studentList.length-1 ; i++) {
Student next = studentList.get(i+1);
studentList.get(i).setNextStartTime(next.getStartTime());
}
答案 3 :(得分:1)
如果您知道自己拥有最多2个值,则可以检查accesstoken
有2个值,并使用if(studentList.size()>1)
和st
设置studentList.get(0)
的值。
我希望它有所帮助。