首先,我们需要定义一个事务对象,包含金额和类别属性。然后,我们可以使用Java 8的流操作来分组、求和和排序该事务对象的列表。
import java.util.*;
import java.util.stream.Collectors;
// 定义事务对象
class Transaction {
private String category;
private double amount;
public Transaction(String category, double amount) {
this.category = category;
this.amount = amount;
}
public String getCategory() {
return category;
}
public double getAmount() {
return amount;
}
@Override
public String toString() {
return "Transaction{" +
"category='" + category + '\'' +
", amount=" + amount +
'}';
}
}
public class Main {
public static void main(String[] args) {
List transactions = new ArrayList<>();
transactions.add(new Transaction("Category1", 100.0));
transactions.add(new Transaction("Category2", 200.0));
transactions.add(new Transaction("Category1", 150.0));
transactions.add(new Transaction("Category2", 300.0));
transactions.add(new Transaction("Category3", 250.0));
// 按照类别分组,求和并排序
Map categorySumMap = transactions.stream()
.collect(Collectors.groupingBy(Transaction::getCategory, Collectors.summingDouble(Transaction::getAmount)));
List> sortedList = categorySumMap.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toList());
// 输出结果
for (Map.Entry entry : sortedList) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
在上面的示例中,我们创建了一个包含五个事务对象的列表。然后,我们使用流操作的groupingBy
和summingDouble
方法,按照事务对象的类别进行分组并求和。最后,我们使用sorted
方法对求和结果进行排序,并将结果存储在一个列表中。
运行以上代码将输出以下结果:
Category1: 250.0
Category3: 250.0
Category2: 500.0
这表示按照类别分组、求和并排序事务对象的列表。