小编Sun*_*ame的帖子

Java8:流findFirst结果

我想知道有没有办法摆脱警告findFirst().get()而不使用.orElse()如果我100%知道每次都有结果,所以我永远不会到达那里NoSuchElementException.例如,让我们看看以下代码:

    List<String> myList = new ArrayList<>();
    myList.add("Test");
    myList.add("Example");
    myList.add("Sth");

    String fisrstString = myList.stream().findFirst().get(); // here I surely get "Test" 
Run Code Online (Sandbox Code Playgroud)

我不知道其他IDE如何对待它,但是我的IDE(IntelliJ)将其视为警告('Optional.get()' without 'isPresent()').我想可能它不知道你何时可以到达NoSuchElementException那里,何时不到,或者我不知道为什么.我知道有办法解决这个警告(isPresent()检查.orElse(something)),但有无用的代码,所以我不想使用这些解决方案,因为它们是如此不必要.你知道我该怎么做,或解释这是怎么回事?

编辑:对不起NPE,它有NoSuchElementException我的错误,但我认为这个问题仍然存在.

java intellij-idea optional java-8 java-stream

14
推荐指数
4
解决办法
3万
查看次数

Java8:Stream在同一个流中映射两个属性

我有一个Model具有以下签名的课程:

class Model {
        private String stringA;
        private String stringB;

        public Model(String stringA, String stringB) {
            this.stringA = stringA;
            this.stringB = stringB;
        }

        public String getStringA() {
            return stringA;
        }

        public String getStringB() {
            return stringB;
        }
}
Run Code Online (Sandbox Code Playgroud)

我想将a映射List<Model>List<String>包含stringA和stringB的单个流中

List<String> strings = models.stream()
                .mapFirst(Model::getStringA)
                .thenMap(Model::getStringB)
                .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

要么:

List<String> strings = models.stream()
                .map(Mapping.and(Model::getStringA,Model::getStringB))
                .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

当然,他们都没有编译,但你明白了.

它有可能吗?

编辑:

例:

Model ab = new Model("A","B");
Model cd = new Model("C","D");
List<String> stringsFromModels = {"A","B","C","D"};
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

10
推荐指数
2
解决办法
5081
查看次数

Java8过滤并返回if if only元素

如何使用java8流过滤列表并返回找到的元素(如果它是过滤列表中的唯一元素),否则(如果有更多满足条件,或者没有满足条件的结果)返回例如 Optional.empty()

我需要这样的东西:

假设我有一个:

List<String> list = Arrays.asList("Apple","Banana","Peach");
Run Code Online (Sandbox Code Playgroud)

然后我想:

Optional<String> string = list.stream()
    .filter(item -> item.startsWith("A"))
    .findOne();
Run Code Online (Sandbox Code Playgroud)

我知道我可以做到:

boolean singleElement = list.stream()
        .filter(item -> item.startsWith("A"))
        .count() == 1;

String string = null;

if(singleElement){
  string = list.stream().filter(item -> item.startsWith("A")).iterator().next();
}
Run Code Online (Sandbox Code Playgroud)

但我想知道我是否可以在一个流中完成它?

有没有单流解决方案?

java filter java-8 java-stream

6
推荐指数
1
解决办法
686
查看次数

Java-8:流还是更简单的解决方案?

我有两个型号,List<ModelA>我希望将其转换为List<ModelB>.这是我的模特:

class ModelA {

    private Long id;
    private String name;
    private Integer value;

    public ModelA(Long id, String name, Integer value) {
        this.id = id;
        this.name = name;
        this.value = value;
    }

    public Long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public Integer getValue() {
        return value;
    }
}

class ModelB {
    private Long id;
    private Map<String, Integer> valuesByName;

    public ModelB(Long id, Map<String, Integer> valuesByName) {
        this.id = id;
        this.valuesByName = valuesByName; …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

6
推荐指数
1
解决办法
144
查看次数

Docker 构建在 npm install 时失败

您好,我尝试将 docker 与 Angular 应用程序一起使用,但在 npm install 时失败,而当我运行 npm install 时,它在“本地”安装时失败,但没有收到这些依赖项错误/警告。

这是 docker build 的错误日志:

 > [node 4/6] RUN npm install:
#12 9.943 npm notice
#12 9.943 npm notice New patch version of npm available! 7.5.1 -> 7.5.2
#12 9.944 npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.5.2>
#12 9.944 npm notice Run `npm install -g npm@7.5.2` to update!
#12 9.944 npm notice
#12 9.950 npm ERR! code ERESOLVE
#12 9.956 npm ERR! ERESOLVE unable to resolve dependency tree
#12 9.956 npm ERR!
#12 …
Run Code Online (Sandbox Code Playgroud)

nginx npm docker angular

6
推荐指数
1
解决办法
2万
查看次数

Java8组列出要映射的列表

我有一个具有以下签名ModelProperty类:

public class Property {

    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

public class Model {

    private List<Property> properties = new ArrayList<>();

    public List<Property> getProperties() {
        return properties;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想Map<String, Set<Model>>List<Model>这里的关键是从名称Property类.我怎样才能使用java8流按其Propery名称对该列表进行分组?所有Property的名字都是独一无二的.

可以在单个流中解决,还是应该以某种方式拆分它或者寻找经典的解决方案?

java java-8 java-stream

5
推荐指数
1
解决办法
1214
查看次数

JavaFx:自动完成多选文本字段

我必须使用具有自动完成功能和多项选择功能的组件,我将附上一张图片以显示我的意思:

在此处输入图片说明

我知道基本JavaFx不支持它,但是也许您知道我在哪里可以找到如何做的建议。

如果有任何第三方库具有此功能,我将不胜感激一个链接,或者如果没有,则将帮助我实现它的任何建议 / 想法

自动完成部分已经实现并在此处回答:JavaFX TextField自动建议,因此请不要提出建议。我对多选部分感兴趣,因此在文本字段中发现一个要显示的元素之后,我可以寻找其他项目。

java javafx autocomplete textfield javafx-8

5
推荐指数
1
解决办法
105
查看次数

JavaFx:侦听器和/或绑定处理

我只是想知道JavaFx如何处理的监听器ObservableValue。关于监听器,我总体上有一些不清楚的地方:

  • javaFx如何处理相同值的多个侦听器?据我所知,我可以将多个侦听器添加到同一个obsValue中,那么触发顺序是什么?喜欢在fifo吗?
  • 如果将相同的侦听器(相同的实例)两次添加到同一对象,会被添加两次,会发生什么?如果是,那么它将触发两次?或者我不确定它是如何工作的。
  • 我知道在某些情况下可以用绑定替换侦听器,反之亦然,但是哪个更有效?更好地绑定,还是更好地添加侦听器?

我使用了一段时间的监听器和绑定,所以我知道如何使用它们(至少我想我知道:)),然后我对如何使用它们不感兴趣,因为我必须做一些更复杂的监听或绑定,我想像我写的那样澄清一些要点,以确保我有效地使用它们,并且我不会发生任何不必要的内存泄漏。

我会接受此领域的任何解释或任何好的文档,在这些方面我可以从中找到答案。

java binding javafx listener javafx-8

2
推荐指数
1
解决办法
1772
查看次数

JavaFx:双向绑定数字,带加/乘/

我想双向绑定两个DoubleProperty,但不是真正的1:1,例如以1:1.2的比例绑定。

我需要类似的东西:

DoubleProperty x;
DoubleProperty y;

x.bindBidirectional(y.multiply(1.2));
Run Code Online (Sandbox Code Playgroud)

因此,每次设置x的值时,y值应为x * 1.2 ,每次设置y值时,x值应为y / 1.2

我该怎么做?

java binding javafx javafx-8

1
推荐指数
1
解决办法
49
查看次数