list根据Boolean排序,true在前
时间: 2024-02-24 11:58:26 浏览: 85
可以使用Comparator.comparing方法对Boolean类型进行排序,然后使用Collections.sort方法进行排序。以下是一个示例代码,可以根据Boolean值对List进行排序,true值将排在前面:
```
List<Boolean> list = Arrays.asList(false, true, true, false, true);
Collections.sort(list, Comparator.comparing(b -> !b));
System.out.println(list); // 输出 [true, true, true, false, false]
```
在上面的代码中,Comparator.comparing方法会返回一个Comparator,该Comparator将Boolean值取反后进行比较,这样true值将排在false值前面。然后将该Comparator作为参数传递给Collections.sort方法进行排序,最终得到一个根据Boolean值排序后的List。
相关问题
Java list 根据字段排序去重
在 Java 中,可以使用 Comparator 和 TreeSet 来实现根据字段排序去重的功能。假设有一个包含对象的 List,其中对象包含一个字段 field,可以按照如下方式进行排序去重:
```java
// 定义对象类
class MyClass {
private int field;
public MyClass(int field) {
this.field = field;
}
public int getField() {
return field;
}
// 重写 equals 和 hashCode 方法
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof MyClass)) {
return false;
}
MyClass other = (MyClass) obj;
return field == other.field;
}
@Override
public int hashCode() {
return Objects.hash(field);
}
}
// 对 List 进行排序去重
List<MyClass> myList = new ArrayList<>();
myList.add(new MyClass(3));
myList.add(new MyClass(1));
myList.add(new MyClass(2));
// 按照 field 字段进行排序
myList.sort(Comparator.comparingInt(MyClass::getField));
// 去重
List<MyClass> uniqueList = new ArrayList<>(new TreeSet<>(myList));
```
这里的 Comparator 接口用于指定排序的字段,TreeSet 用于实现去重,需要重写对象的 equals 和 hashCode 方法以保证去重的正确性。排序后的列表可以直接传递给 TreeSet 构造函数,去重后的列表可以使用 ArrayList 构造函数进行初始化。
Java8中对list中的数据使用false或者true排序
可以使用Java8的Stream API和lambda表达式来对List中的数据使用false或者true排序。假设我们有一个包含Boolean类型的List,我们可以使用以下代码来对其进行排序:
```
List<Boolean> list = ... // 待排序的列表
List<Boolean> sortedList = list.stream()
.sorted(Comparator.comparing(Boolean::booleanValue))
.collect(Collectors.toList());
```
在上面的代码中,我们使用了Java 8的Stream API中的sorted方法来对List进行排序。我们通过提供一个Comparator<Boolean>来指定排序规则,其中我们使用了Boolean的booleanValue方法来获取Boolean对象的boolean值。这样就可以将false排在true的前面了。
需要注意的是,如果我们的List中包含null值,那么在使用booleanValue方法时会抛出NullPointerException。因此,如果我们的List中可能包含null值,需要在Comparator中进行特殊处理。比如可以使用以下代码:
```
List<Boolean> sortedList = list.stream()
.sorted(Comparator.nullsFirst(Comparator.comparing(Boolean::booleanValue)))
.collect(Collectors.toList());
```
在上面的代码中,我们使用了Java 8的Comparator的nullsFirst方法来将null值排在前面。这样就可以安全地对包含null值的List进行排序了。