使用java8的排序列表
我有一个类似于使用java8的排序列表,java,java-8,Java,Java 8,我有一个类似于ArrayList 您可以使用Java8流来实现如下所示的相同功能 List<String> sortedList = list.stream().sorted().collect(Collectors.toList()); List-sortedList=List.stream().sorted().collect(Collectors.toList()); 用于创建所需的模式,以便可以将日期字符串解析为 用于比较解析的日期字符串上的DateFrequency对象
ArrayList
您可以使用Java8流来实现如下所示的相同功能
List<String> sortedList = list.stream().sorted().collect(Collectors.toList());
List-sortedList=List.stream().sorted().collect(Collectors.toList());
DateFrequency
对象import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class DateFrequency {
private String date;
private String frequency;
public DateFrequency(String date, String frequency) {
this.date = date;
this.frequency = frequency;
}
public String getDate() {
return date;
}
@Override
public String toString() {
return "DateFrequency [date=" + date + ", frequency=" + frequency + "]";
}
}
public class Main {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
List<DateFrequency> list = new ArrayList<DateFrequency>();
list.add(new DateFrequency("05/10/2020", "60-DAYS"));
list.add(new DateFrequency("05/10/2020", "30-DAYS"));
list.add(new DateFrequency("05/11/2020", "30-DAYS"));
list.add(new DateFrequency("05/12/2020", "60-DAYS"));
list.add(new DateFrequency("05/11/2020", "90-DAYS"));
// Sort on dates in ascending order
Collections.sort(list, Comparator.comparing((df) -> LocalDate.parse(df.getDate(), formatter)));
// Display the sorted result
for (DateFrequency df : list) {
System.out.println(df);
}
}
}
DateFrequency [date=05/10/2020, frequency=60-DAYS]
DateFrequency [date=05/10/2020, frequency=30-DAYS]
DateFrequency [date=05/11/2020, frequency=30-DAYS]
DateFrequency [date=05/11/2020, frequency=90-DAYS]
DateFrequency [date=05/12/2020, frequency=60-DAYS]
假设:
dd/MM/yyyy
。如果没有,请在对象中相应地更改它,formatter
尝试使用比较器。解决方案取决于
DateFrequency
是什么。这是已经在5个地方解释过的非常基本的东西。在询问之前进行搜索,以比任何人在此处键入新答案更快地获得好答案。不要将日期和频率作为字符串保存在对象中。日期使用LocalDate
,频率使用int
或某种枚举类型;你也可以考虑<代码>期限<代码>。当您需要显示数据时,您可以始终以用户友好的方式格式化数据。问题不是字符串列表。我没有收到像2020年10月5日、“30天”或2020年10月5日、“60天”或2020年11月5日、“30天”或2020年11月11日、“90天”这样的订单@SubrahmanyamGuntupalli——我假设记录只需要按日期排序,而不需要按频率排序。这是正确的假设吗?我需要按频率和日期列出顺序
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class DateFrequency {
private String date;
private String frequency;
public DateFrequency(String date, String frequency) {
this.date = date;
this.frequency = frequency;
}
public String getDate() {
return date;
}
@Override
public String toString() {
return "DateFrequency [date=" + date + ", frequency=" + frequency + "]";
}
}
public class Main {
public static void main(String[] args) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
List<DateFrequency> list = new ArrayList<DateFrequency>();
list.add(new DateFrequency("05/10/2020", "60-DAYS"));
list.add(new DateFrequency("05/10/2020", "30-DAYS"));
list.add(new DateFrequency("05/11/2020", "30-DAYS"));
list.add(new DateFrequency("05/12/2020", "60-DAYS"));
list.add(new DateFrequency("05/11/2020", "90-DAYS"));
// Sort on dates in ascending order
Collections.sort(list, Comparator.comparing((df) -> LocalDate.parse(df.getDate(), formatter)));
// Display the sorted result
for (DateFrequency df : list) {
System.out.println(df);
}
}
}
DateFrequency [date=05/10/2020, frequency=60-DAYS]
DateFrequency [date=05/10/2020, frequency=30-DAYS]
DateFrequency [date=05/11/2020, frequency=30-DAYS]
DateFrequency [date=05/11/2020, frequency=90-DAYS]
DateFrequency [date=05/12/2020, frequency=60-DAYS]