以下のようなレコードのリストがあります。日付に基づいて最新のレコードをフェッチし、その名前を「H」に設定します。同様に、残りのすべてのレコードの名前として「L」を設定します。
List<Student> studentList = new ArrayList<>();
try {
studentList.add(new Student("A", new SimpleDateFormat("dd-MM-yyyy").parse("01-01-1990")));
studentList.add(new Student("B", new SimpleDateFormat("dd-MM-yyyy").parse("01-01-2010")));
studentList.add(new Student("C", new SimpleDateFormat("dd-MM-yyyy").parse("01-01-2011")));
studentList.add(new Student("D", new SimpleDateFormat("dd-MM-yyyy").parse("01-01-2012")));
studentList.add(new Student("E", new SimpleDateFormat("dd-MM-yyyy").parse("01-01-2018")));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Student student = Collections.max(studentList, Comparator.comparing(s -> s.getDate()));
上記のように試しましたが、ここでは最新のレコードにのみ名前を設定できますが、残りのすべてのレコードに名前を設定することはできません。
任意の助けいただければ幸いです。
日付しかない場合は、java-8 を使用LocalDate
してください。DateTimeFormatter
studentList.add(new Student("A", LocalDate.parse("01-01-1990", DateTimeFormatter.ofPattern("dd-MM-yyyy")));
だから、Student
クラスは次のようになります
public class Student {
private String name;
private date LocalDate;
//getters and setters
}
今Collections.max
からLocalDate
インプリメントを使用Comparable
Student student = Collections.max(studentList, Comparator.comparing(s -> s.getDate()));
設定H
してL
最初のaaproach
ここで提案するアプローチはname = L
、forEach
studentList.forEcah(stu->stu.setName("L"));
次に、コンパレータを使用して最大の生徒を取得し、name =を設定します H
Student student = Collections.max(studentList, Comparator.comparing(s -> s.getDate()));
student.setName("H");
2番目のアプローチ
List
最初に並べ替えることができます
studentList.sort(Comparator.comparing(s -> s.getDate()).reversed());
そして、Set name = H
最初のレコードとL
残りのレコード
IntStream.range(0,studentList.size())
.forEach(i->{
if(i==0) {
studentList.get(i).setName("H");
}
else {
studentList.get(i).setName("L");
}
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加