小编Tao*_*itz的帖子

Java 8 Streams - Iterator根据条件映射和删除

我试图弄清楚如何重写这个以使用流和过滤器来缩小我的标准并在必要时从地图中删除.

Iterator<Map.Entry<String,Object>> iter = listOfPossibleParams.entrySet().iterator();
while (iter.hasNext()) {
    Map.Entry<String,Object> entry = iter.next();
    if(entry.getValue() instanceof String) {
        if (StringUtils.isBlank((String) entry.getValue())) {
            iter.remove();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我最初在想这样的事情,但它显然不起作为语法错误:

listOfPossibleParams.entrySet()
            .stream()
            .filter(p -> p.getValue() instanceof String)
            .removeIf(e -> StringUtils.isBlank((String)e.getValue()));
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

使用Java Predicate和Lambda

为什么以下代码返回Predicate<String>而不是boolean

我的理解是!s.isEmpty()这里的检查是违反谓词boolean test(T t);boolean.这里的返回类型是.

所以在我的lambda中,我的nonEmptyStringPredicate不是类型boolean吗?显然,它不是,我只是想了解它为什么不是.

Predicate<String> nonEmptyStringPredicate = (String s) -> !s.isEmpty();
Run Code Online (Sandbox Code Playgroud)

java lambda predicate java-8 functional-interface

8
推荐指数
2
解决办法
1631
查看次数

Java String immutable由reference/value传递

嗨我正在学习我的scja考试,并有一个关于字符串传递ref /值以及它们如何不可变的问题.以下代码输出"abc abcfg".

我想知道的是为什么会发生这种情况?我不明白方法f里面发生了什么.字符串是按值传递的,所以它肯定会在方法中变为"abcde"吗?因为如果b + ="fg"附加到字符串,为什么它在方法内部不起作用?

谢谢!

public class Test {

    public static void main(String[] args){
        String a =new String("abc");
        String b = a;
        f(b);
        b+="fg"
        System.out.println(a + " " + b);
    }

    public static void f(String b){
        b+="de";
        b=null;
    }
}
Run Code Online (Sandbox Code Playgroud)

java

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

Java学习任务+解决方案(迷你项目)

我目前正在阅读Head First Java,我想知道是否有任何网站或书籍?我可以去那将为我练习某种任务或任务.为了更好地理解java.甚至像迷你项目之类的东西,然后最后我可以看到一个完整的解决方案,它将向我展示我可以改进代码的区域.

也许是一个用于创建游戏的Step by Step项目教程?

有没有人有这样的资源?

谢谢

java resources project

3
推荐指数
2
解决办法
4410
查看次数

Java IO 创建/追加文件

我试图创建一个文件,如果它不存在,如果它存在则追加到它。这是最好的方法吗?我个人不确定在一个方法中包含两个 try catch 是否好?

   public static void main(String [] args)
    {
        String fileLocation = "/temp/";
        String name = "Bob";
        String timeStamp = "1988-03-15";
        Path path = Paths.get(fileLocation+ "info.log");

        if(!Files.exists(path)){
            try {
                Files.createFile(path);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        try (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8, StandardOpenOption.APPEND)) {
            SimpleDateFormat tTimeFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS");
            writer.write(tTimeFormatter.format(System.currentTimeMillis()) + " name: " + name + " Timestamp: "+ timeStamp);
            writer.newLine();
        } catch (IOException e) {
          System.out.print(e.getStackTrace());
        }
    }
Run Code Online (Sandbox Code Playgroud)

java file-io file

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

使用Java 8可选 - 转换逻辑

我正在尝试学习如何Optional在Java中使用- 但这似乎不正确我在做什么.

User user = null;

public AuthCheck(User user) throws Exception {
    if (user == null) {
        throw new Exception("No user!");
    }
    if (!(user.getStuff() != null && !user.getStuff().isEmpty())) {
        throw new Exception("User has no stuff");
    }
    this.user = user;
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试使用Optional以下方法转换它:

Optional<UserOptional> user;

public AuthCheckOptional(Optional<UserOptional> user) throws Exception {
    user.orElseThrow(() -> new Exception("No User!"));

    user.map(UserOptional::getStuff)
        .orElseThrow(() -> new Exception("User has no stuff"));

    this.user = user;
}
Run Code Online (Sandbox Code Playgroud)

我想我不需要两次单独检查.另外我相信我已经改变了逻辑,因为IsEmpty()没有发生.

java exception-handling optional java-8

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