当前位置: 首页 > 知识库问答 >
问题:

Java 8 stream min()和anyMatch()(或类似的东西)在一行中

韩智明
2023-03-14

我有一个具有以下结构的对象列表:

public class ExampleObject {

    private boolean someBoolean;
    private int someInteger;
    // getters, setters, constructor...
}

我需要一个方法,如果任何对象的someBoolean字段设置为true,它将返回整数-1,否则返回someInteger的最小值。

我可以用simple for loop来做,有没有一种方法可以用一个流来做呢?我的问题是anyMatch和min()都在终止流。

共有2个答案

邓鸿彩
2023-03-14

如果您热衷于短路,那么可能的方法是将anyMatch()min()分开。但是请注意,如果没有一个布尔元素设置为true,这可能需要遍历列表两次。

下面是一个片段,

OptionalInt optionalint = OptionalInt.of(-1);
if (!myList.stream().anyMatch(hd -> hd.bool)) { // If nothing matches, optionalint remains -1
   optionalint = myList.stream().mapToInt(he -> he.num).min();
}
//Other logic with optionalInt
周楷
2023-03-14

如果一些整数是非负的,您可以根据boolean属性的值将每个实例映射为-1或一些整数,并找到最小值:

OptionalInt min = list.mapToInt (o -> o.getSomeBoolean () ? -1 : o.getSomeInteger())
                      .min();

如果someInteger可以为负数,则可以将布尔属性为其true的实例映射为整数。最小值,如果等于整数,则将输出更改为-1。最小值

 类似资料:
  • 问题内容: 我正在尝试制作一个按钮,以便用户单击它时,按住鼠标按钮时它会更改其样式。如果在移动浏览器中触摸它,我也希望它以类似的方式更改其样式。对我来说,看似显而易见的事情是使用CSS:active伪类,但这没有用。我尝试了:focus,但是也没有用。我尝试:hover,它似乎起作用了,但是当我将手指从按钮上移开后,它仍然保持了样式。所有这些观察都是在iPhone 4和Droid 2上进行的。 有

  • 问题内容: 场景 我正在用Java编写涉及汽车的程序。 注意:我已尽最大可能简化了此方案,以使其更加通用和易于理解。 我实际上不是在开车。 我创建了一个类,它是对象的集合。 该对象具有一个(double)和一个(int)。构造函数将年份作为参数,例如: 这是棘手的部分…汽车必须具有某种类型(比如说Corvette或Clunker)。克尔维特(克尔维特)的车子为and,Cl子(Clunker)的车子

  • 问题内容: 刚刚在玩CSS中的属性。 我想让所有鼠标事件都看不到,除了。 因此,所有单击命令都将转到其下一个,但div可以报告鼠标是否在其上方。 谁能告诉我是否可以做到? HTML: CSS: 问题答案: 我认为仅凭CSS不可能实现您的目标。但是,正如其他贡献者所提到的那样,在JQuery中做起来很容易。这是我的操作方法: 的HTML CSS(不变) jQuery查询

  • 我想知道探索者是否有一个唯一的id或什么的,因为我正在做一个实验,我意识到谷歌检测它是同一台电脑,即使我有很多机会。我已经试过了 null 我真的很感谢你们的帮助,谢谢你们

  • 我想用超文本标记语言检查某个文本,比如“无值”,如果存在,就给它赋值0。有人知道怎么做吗?(谷歌了很多,但没有找到任何相关的东西)

  • 问题内容: 在C#中,您可以将一个类标记为,以便只能从同一包中对其进行访问。Java有什么类似的东西吗? 问题答案: 您可以通过从类的声明中省略安全修饰符(公共,私有)来创建程序包专用类。