在什么情况下,在Java 8流中调用'reduce'的第三个参数?
下面的代码尝试遍历字符串列表并添加每个字符串的第一个字符的代码点值.似乎永远不会使用最终lambda返回的值,如果插入println,它似乎永远不会被调用.该文档将其描述为"组合器",但我无法找到更多细节......
int result =
  data.stream().reduce(0, (total,s) -> total + s.codePointAt(0), (a,b) -> 1000000); 
我有以下对象:
public class Item {
    String value;
    List<Person> owners;
    Person creator;
}
public class Person {
    String name;
    int id;
    Person manager;
}
现在我有一个包含3个Item对象的列表:
i1 -> {value="1", owners=[p1, p2, p3], creator=p4}
i2 -> {value="2", owners=[p2, p3], creator=p5}
i3 -> {value="3", owners=[p5], creator=p1}
Person对象如下:
p1 -> {manager=m1, ...}
p2 -> {manager=m2, ...}
p3 -> {manager=m3, ...}
p4 -> {manager=m2, ...}
p5 -> {manager=m1, ...}
我想根据所有者和创建者的管理者对Item对象的流进行分组.结果Map<Person, List<Item>>应如下所示:
{
  m1: [i1, i2, i3],
  m2: [i1, i2],
  m3: [i1, i2]
}
我认为使用Stream和Collector …
我上课了
class Person {
   // get/set omitted for simplicity
   public String firstName;
   public String lastName;
}
我也有这样的对象列表
List<Person> list ...
我需要使用以下流转换
List<Person> list ...
List<String> firstLastNames = list.stream()....
所以我的List firstLastNames将包含此列表中的名字和姓氏.所以.
System.out.println(firstLastNames); // will give me -> "John", "Smith", "Jessica", "Jones".. etc.
如果有人能解释为什么我不能使用Java中的Stream API来比较数组中的String,我将很高兴.
我试图在第一个单词按字典顺序排在第二个单词之前仅过滤对.
String[] input = { "Apple", "Banana" };
    Arrays.stream(input)
            .filter( (a,b)-> a.compareTo(b)< 0 )
看来Java不明白,"b"是一个字符串,但为什么呢?