2016-01-06 102 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案件,除非你能得到你的版本庫返回一個集合類型,真正使該尺寸保證你。