java 取list前十对象_Java 通过stream()获取找到List(列表)中最小的对象元素

class Foo {

private int variableCount;

public Foo(int vars) {

this.variableCount = vars;

}

public Integer getVariableCount() {

return variableCount;

}

}

1、实现accumulator object用于给Collector提供函数/**

* Accumulator object to hold the current min

* and the list of Foos that are the min.

*/

class Accumulator {

Integer min;

List foos;

Accumulator() {

min = Integer.MAX_VALUE;

foos = new ArrayList<>();

}

void accumulate(Foo f) {

if (f.getVariableCount() != null) {

if (f.getVariableCount() < min) {

min = f.getVariableCount();

foos.clear();

foos.add(f);

} else if (f.getVariableCount() == min) {

foos.add(f);

}

}

}

Accumulator combine(Accumulator other) {

if (min < other.min) {

return this;

}

else if (min > other.min) {

return other;

}

else {

foos.addAll(other.foos);

return this;

}

}

List getFoos() { return foos; }

}

2、调用方法和测试

1)示例ListList foos = Arrays.asList(new Foo(3), new Foo(3), new Foo(2), new Foo(1), new Foo(1), new Foo(4));

2)调用方法List mins = foos.stream().collect(Collector.of(

Accumulator::new,

Accumulator::accumulate,

Accumulator::combine,

Accumulator::getFoos

)

);

输出结果:

[Foo{1}, Foo{1}]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值