我的列表包含类似的集合[1,3,5][2,6,4],大小相同.我试过这样做,但似乎没有用.
List<TreeSet<T>> block;
for(TreeSet<T> t : block){
block.stream().sorted((n,m)->n.compareTo(m)).collect(Collectors.toSet());
}
Run Code Online (Sandbox Code Playgroud)
我想要的最终结果是[1,2,3][4,5,6].
我可以尝试添加在所有的元素ArrayList和那种出来再做出新List的TreeSet的.但是有一种衬垫吗?
更新:
List<T> list=new ArrayList<T>();
for(TreeSet<T> t : block){
for(T t1 : t)
{
list.add(t1);
}
}
list=list.stream().sorted((n,m)->n.compareTo(m)).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
这有效但可以简化吗?
需要关于带有 groupingBy 的 Stream 案例的帮助我希望能够按 2 个不同的字段进行分组,并根据不同的分组获得其他 BigDecimal 字段的总和。这是我的实体:
public class Customer {
private String name;
private String type;
private BigDecimal total;
private BigDecimal balance;
// Setter, getter
}
Run Code Online (Sandbox Code Playgroud)
假设我输入了这个列表:
Customer custa = new Customer("A", "STANDARD", new BigDecimal("1000"), new BigDecimal("1500"));
Customer custa1 = new Customer("A", "VIP", new BigDecimal("2000"), new BigDecimal("2500"));
Customer custb = new Customer("B", "STANDARD", new BigDecimal("3000"), new BigDecimal("3500"));
Customer custc = new Customer("C", "STANDARD", new BigDecimal("4000"), new BigDecimal("4500"));
Customer custa2 = new Customer("A", "VIP", new BigDecimal("1500"), new BigDecimal("2500")); …Run Code Online (Sandbox Code Playgroud) 我很简单
class Per{
int a;
long b;
double c;
String d;
}
Run Code Online (Sandbox Code Playgroud)
假设我有3000个类型的对象Per并收集在一个List<Per> pers
现在我想实现: -
d为null或blankabc老路是
int totalA = 0; long totalB = 0l; long totalC = 0l;
for (Per per : pers) {
if (per.d != null && !per.d.trim().equals("")) {
totalA += per.a;
totalB += per.b;
totalC += someOperation(per.c);
}
}
Run Code Online (Sandbox Code Playgroud)
someOperation 实施并不重要,因为它可能简单或复杂.
如何通过Java8流和lambda表达式实现这一目标?
一个可能的答案是这样的
int totalA = 0; long totalB=0l;
pers.stream().filter(p->{
if(p …Run Code Online (Sandbox Code Playgroud)