Java 8 如何将Stream转换为IntStream

Java 8 如何将Stream转换为IntStream,java-8,java-stream,Java 8,Java Stream,我想实现一个名为youngWinners的静态方法,该方法给定一个流返回一个新流,其中包含35岁以下的获奖者,按字母顺序排列 在我的文件中,我有:索引、年份、年龄、姓名、电影 我的问题是,我不知道如何将Stream转换为IntStream来比较35岁的年龄。我也有点困惑,我是否必须使用比较器来做这件事 public static Stream<Winner> youngWinners(Stream<Winner> young) { // Stream<Wi

我想实现一个名为
youngWinners
的静态方法,该方法给定一个
返回一个
新流
,其中包含35岁以下的获奖者,按字母顺序排列

在我的文件中,我有:索引、年份、年龄、姓名、电影

我的问题是,我不知道如何将
Stream
转换为
IntStream
来比较35岁的年龄。我也有点困惑,我是否必须使用比较器来做这件事

public static Stream<Winner> youngWinners(Stream<Winner> young) {
    //  Stream<Winner> youngWin = young;
    String[] toString = young.toArray(s -> new String[s]);
    Arrays.stream(toString).flatMap((<any> f) -> {
        try {
            return Files.lines(Paths.get(f))
                    .filter(age -> int (age) <= 35 )
                    .mapToInt(a -> a.getWinnerage())
                    .map(WinneropsDB::new);                                                    
        } catch (Exception e) {                
            System.out.println("error");
            return null;
        }
    });
    return null;
}
publicstaticstreamyoungwinners(streamyoung){
//流youngWin=年轻;
字符串[]toString=young.toArray->新字符串];
Arrays.stream(toString).flatMap((f)->{
试一试{
返回文件.line(path.get(f))
.filter(age->int(age)a.getWinnerage())
.map(WinneropsDB::新建);
}捕获(例外e){
System.out.println(“错误”);
返回null;
}
});
返回null;
}

您根本不需要
IntStream

简单地做:

return young.filter(w -> w.getAge() < 35)
            .sorted(Comparator.comparing(Winner::getName));
return young.filter(w->w.getAge()<35)
.sorted(Comparator.comparing(Winner::getName));

Winner类应该实现Comparable,实现的compareTo方法应该比较名称,可以使用常规的.stream()方法获取Winners数组/集合的流,调用.filter()获取35岁以上的人,然后调用sort()。它将隐式实现compareTo,最后打印结果。另外,您的代码很难看,很抱歉,我只是想说:D,但您会变得更好,不要放弃。谢谢您的回答,因为我是java初学者,我在java方面没有任何经验:D但我会努力做得更好;-)你能帮我怎么让我的代码变得漂亮吗?也许我不太理解流的意思。无论如何,谢谢:-)