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

Java流创建对象和比较

赵禄
2023-03-14
xmlstream.stream()
         .filter(xml->xml.getName()) //returns a string
         .map(returnedString -> split("__"))
         .map(eachStringInList -> new TestObj(returnedStr[0], returnedStr[1]))
         .map(eachTestObj -> eachTestObj.compareTo(givenObj))
         .max(Comparing.compare(returnedObj :: aProperty))

我如何做到这一点?基本上映射列表中的每个字符串来创建一个对象,将其与fix对象进行比较,并基于其中一个属性返回max。谢了。

共有1个答案

轩辕涵亮
2023-03-14

您可以使用reduce,如下所示:

TestObj predefined = ...

TestObj max = 
       xmlstream.stream()
                .map(xml -> xml.getName()) //returns a string
                .map(s -> s.split("__"))
                .map(a -> new TestObj(a[0], a[1]))
                .reduce(predifined, (e, a) -> 
                      e.aProperty().compareTo(a.aProperty()) >= 0 ? e : a);

上述方法的一个更有效的版本是:

TestObj predefined = ...
TestObj max =
        xmlstream.stream()
                 .map(xml -> xml.getName()) //returns a string
                 .map(s -> s.split("__"))
                 .map(a -> new TestObj(a[0], a[1]))
                 .filter(e -> e.aProperty().compareTo(predefined.aProperty()) > 0)
                 .findFirst()
                 .orElse(predefined);

更新:

TestObj predefined = ...
Optional<TestObj> max =
             xmlstream.stream()
                      .map(xml -> xml.getName()) 
                      .map(s -> s.split("_"))
                      .map(a -> new TestObj(a[0], a[1]))
                      .filter(e -> e.aProperty().compareTo(predefined.aProperty()) < 0)
                      .max(Comparator.comparing(TestObj::aProperty));
 类似资料:
  • 假设我有两个类C1和C2,其中C2由C1的构造函数使用: 现在,我有一个C2对象的列表(List list),我想使用从流式传输的C2对象创建的C1的getProperty()上的条件进行流和筛选。 有办法用溪流做到这一点吗? 我想我应该有XXXX,它使用流中的C2对象创建C1对象,并比较其getProperty()(例如,"value". equals(o2.get)) 这有可能吗?

  • 我需要创建一个对象(银行),其中包含一组客户端和bankID。我的问题是,我不知道如何在主函数中创建银行。 银行类别: 客户端类: 主要类别: 这些是问题所在: 你必须创建一个程序来模拟银行活动。该系统包括以下模块:银行—客户(客户数组)— idBank(字符串)5 BancAccount — accountNumber(字符串)—金额(浮点)客户—姓名(字符串)—地址(字符串)—账户(银行账户数

  • 主要内容:显式创建对象,隐含创建对象对象是对类的实例化。对象具有状态和行为,变量用来表明对象的状态,方法表明对象所具有的行为。 Java 对象的生命周期包括创建、使用和清除,本文详细介绍对象的创建,在 Java 语言中创建对象分显式创建与隐含创建两种情况。 显式创建对象 对象的显式创建方式有 4 种。 1. 使用 new 关键字创建对象 这是常用的创建对象的方法,语法格式如下: 2. 调用 java.lang.Class 或者 ja

  • 假设我有一个实现下面接口的对象列表: 假设我也有一个类,它能够对这些对象进行求和: 我在玩一个自定义收集器,但无法找到一些整洁的解决方案。

  • 问题内容: 我正在尝试将由IP地址或名称指定的地址(都以String(即或))转换为 InetAdress 对象。没有构造函数,而是返回 InetAddress的 静态方法。因此,如果我获得了主机名,这不是问题,但是如果获得IP地址该怎么办?有一种方法可以获取 byte [], 但是我不确定这对我有什么帮助。所有其他方法均获取主机名。 InetAddress API文档 问题答案: 您应该可以使用

  • 我正在尝试创建一个二进制搜索程序,该程序可以使用各种类型的变量(int、float、string等)来查看数组中是否存在元素。我正试图找出如何比较变量。下面是我正在使用的内容的草图: 我甚至不确定使用对象是否是最好的方法。