ssl*_*ssl 3 java sorting comparator java-8
class Manager
{
private int id;
private String name;
public Manager(int id, String name)
{
this.id = id;
this.name = name;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getId() { return id; }
public void setId(int id) { this.id = id; }
}
List<Manager> names = new ArrayList<>();
names.add(new Manager(1, "Robert"));
names.add(new Manager(2, "Paul"));
names.add(new Manager(3, "None"));
names.add(new Manager(4, "Nancy"));
names.add(new Manager(4, "Nancy"));
names.stream().sorted(
Comparator.comparing(n->n.getName())).collect(Collectors.toList());
List<String> names = new List<String>();
names.add("Robert");
names.add("Paul");
names.add("None");
names.add("Nancy");
names.add("Nancy");
names.stream().sorted().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
我需要在Java 8中对字符串列表进行排序,我可以使用下面的逻辑轻松地完成它,但我想在下面的列表中始终显示None.结果必须如此.我需要获取List of Managers对象的排序顺序
None
Jhon
Nancy
Paul
Run Code Online (Sandbox Code Playgroud)
我的代码:
List<String> names = new List<String>();
names.add("Robert");
names.add("Paul");
names.add("None");
names.add("Nancy");
names.add("Jhon");
names.stream().sorted().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
字符串总是需要在第一位.
您可以使用
List<Manager> sorted = names.stream()
.sorted(Comparator.comparing(Manager::getName,
Comparator.comparing((String s) -> !s.equals("None"))
.thenComparing(Comparator.naturalOrder())))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
排序到新列表或使用
names.sort(Comparator.comparing(Manager::getName,
Comparator.comparing((String s) -> !s.equals("None"))
.thenComparing(Comparator.naturalOrder())));
Run Code Online (Sandbox Code Playgroud)
就地排序,这可能是一个可变的列表,如ArrayList.
| 归档时间: |
|
| 查看次数: |
739 次 |
| 最近记录: |