小编Dan*_*yen的帖子

如何使用null检查连续生成java 8 Stream映射

我有这段代码

Coverage mainCoverage = illus.getLifes().stream()
    .filter(Life::isIsmain)
    .findFirst()
    .orElseThrow(() -> new ServiceInvalidAgurmentGeneraliException(env.getProperty("MSG_002")))
    .getCoverages()  
    .stream() // <==may cause null here if list coverage is null
    .filter(Coverage::isMainplan)
    .findFirst()
    .orElseThrow(() -> new ServiceInvalidAgurmentGeneraliException(env.getProperty("MSG_002")));
Run Code Online (Sandbox Code Playgroud)

这完全可以正常工作,但我认为它有点乱,并没有涵盖所有null pointer exception可能的(见评论).

我尝试将此代码重构为

Coverage mainCoverage1 = illus.getLifes().stream()
    .filter(Life::isIsmain)
    .map(Life::getCoverages)
    .filter(Coverage::isMainplan) //<== cannot filter from list coverage to one main coverage
    ...
Run Code Online (Sandbox Code Playgroud)

在我将生命映射到覆盖范围后,它似乎不再是一个覆盖列表.所以问题是如何将第一部分重构为null安全并且可能缩短它?

java java-8 java-stream

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

如何使用离子制作pdf生成器?

我想制作当前页面的 pdf,以便用户可以打印出来,但每个页面都是动态的,所以我需要一种文本到 pdf 生成器才能使其工作。

它是一个 ionic2 应用程序,就像一个食谱页面,所以你可以点击一个按钮,它只是从文本中生成一个 pdf。

你们知道我怎么能做到这一点吗?

html pdf generator ionic2 angular

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

如何创建泛型类的新实例

我创建了这样的函数

public <T extends ClientCoporate> void myFunction(List<T> clients){
    T client = new T(); // issue
    ....
}
Run Code Online (Sandbox Code Playgroud)

IDE错误 Cannot instantiate the type T

简单的问题,如何ClientCoporate在这里创建任何类的新实例?我试着搜索但没有希望,如果你能找到任何重复的问题,请随时给我一面旗帜.谢谢.

java

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

BigDecimal科学记数法字符串和普通字符串

我有这段代码

BigDecimal a = new BigDecimal("8000000");
BigDecimal b = new BigDecimal("80e5");
System.out.println("a equal b? " +a.compareTo(b));

BigDecimal resultA = a.divide(new BigDecimal("1000"), BigDecimal.ROUND_UP);
BigDecimal resultB = b.divide(new BigDecimal("1000"), BigDecimal.ROUND_UP);

System.out.println(resultA.compareTo(resultB));
System.out.println(resultA);
System.out.println(resultB);
Run Code Online (Sandbox Code Playgroud)

结果

a equal b? 0
-1
8000
1E+5
Run Code Online (Sandbox Code Playgroud)

我不明白吗?为什么a 8000000/1000和round up不同80e5/1000和舍入?和Java在表示第一次a compareb是0(等于?)

java bigdecimal

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

由构造函数调用的Arraylist

我创建了一个ArrayList,并尝试在myAnalyzer上调用getAverage方法并指定myClassroom作为参数(参数).但它没有解决它给出以下错误,

GradeAnalyzer.java:40: error: method getAverage in class GradeAnalyzer cannot be applied to given types;

myAnalyzer.getAverage(myClassroom);
        ^
required: no arguments
found: ArrayList<Integer>
reason: actual and formal argument lists differ in length
1 error
Run Code Online (Sandbox Code Playgroud)

码:

import java.util.ArrayList;

public class GradeAnalyzer{
    //constructor
    public GradeAnalyzer(){
    }
    //method get average created returns int
    public int getAverage(){
        ArrayList<Integer> grades = new ArrayList<Integer>();
        if(grades.size() < 1){
            System.out.println("Arraylist is empty");
            return 0;
        }else{
            int sum = 0;      
            for(Integer grade :grades){
                sum = grade + sum;
            }
            int average …
Run Code Online (Sandbox Code Playgroud)

java

-4
推荐指数
1
解决办法
222
查看次数

标签 统计

java ×4

angular ×1

bigdecimal ×1

generator ×1

html ×1

ionic2 ×1

java-8 ×1

java-stream ×1

pdf ×1