Springboot中如何对一个[{itemid:1,rating:0.9},{itemid:2,rating:0.8},{itemid:3,rating:0.5}]数组中的rating进行排序,并保留前rating值最大的10个其中rating是BigDecimal类型
时间: 2023-11-27 07:53:30 浏览: 31
可以使用Java 8的Stream API和Comparator实现对数组中的rating进行排序,然后使用limit方法取前10个元素。
示例代码如下:
```
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class SortRatings {
public static void main(String[] args) {
List<BigDecimal> ratings = Arrays.asList(
new BigDecimal("0.9"), new BigDecimal("0.8"), new BigDecimal("0.5"),
new BigDecimal("0.7"), new BigDecimal("0.6"), new BigDecimal("0.4")
);
List<BigDecimal> sortedRatings = ratings.stream()
.sorted(Comparator.reverseOrder())
.limit(3)
.collect(Collectors.toList());
System.out.println(sortedRatings);
}
}
```
输出结果为:
```
[0.9, 0.8, 0.7]
```
在实际应用中,需要将数组中的每个元素转换为一个包含itemid和rating属性的对象,然后按照rating进行排序。示例代码如下:
```
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class SortItems {
public static void main(String[] args) {
List<Item> items = Arrays.asList(
new Item(1, new BigDecimal("0.9")),
new Item(2, new BigDecimal("0.8")),
new Item(3, new BigDecimal("0.5")),
new Item(4, new BigDecimal("0.7")),
new Item(5, new BigDecimal("0.6")),
new Item(6, new BigDecimal("0.4"))
);
List<Item> sortedItems = items.stream()
.sorted(Comparator.comparing(Item::getRating).reversed())
.limit(3)
.collect(Collectors.toList());
System.out.println(sortedItems);
}
}
class Item {
private int itemid;
private BigDecimal rating;
public Item(int itemid, BigDecimal rating) {
this.itemid = itemid;
this.rating = rating;
}
public int getItemid() {
return itemid;
}
public void setItemid(int itemid) {
this.itemid = itemid;
}
public BigDecimal getRating() {
return rating;
}
public void setRating(BigDecimal rating) {
this.rating = rating;
}
@Override
public String toString() {
return "Item [itemid=" + itemid + ", rating=" + rating + "]";
}
}
```
输出结果为:
```
[Item [itemid=1, rating=0.9], Item [itemid=2, rating=0.8], Item [itemid=4, rating=0.7]]
```
阅读全文