标签: java-8

使用varargs的Java方法,它执行操作并打印已知结果

在Java中是否可以创建类似于此execute方法的方法:

public void execute(Runnable... mrs) {
    for (Runnable mr : mrs) {
        mr.run();
        // should print some expected string here
    }
}

public void sleep(int seconds) {
    try {
        Thread.sleep(1000 * seconds);
    } catch (InterruptedException ex) {
        log.error("Error occured", ex);
    }
}

public void customExecute() {
    execute(() -> sleep(1), () -> sleep(2));
}
Run Code Online (Sandbox Code Playgroud)

但在执行每个操作后,它应该打印传递的String参数和(问题的关键时刻)它应该支持一行使用 - 类似于:

execute(("Action 1 passed") -> someAction(), ("Other action passed") -> otherAction());
Run Code Online (Sandbox Code Playgroud)

java variadic-functions java-8

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

Java 8 Streams - 在迭代过程中抛出异常

我有以下数组

ArrayList<Car> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

我想迭代它并抛出异常,如果它包含一定的值

如果至少有一个

list.stream.filter(x -> x.color.equals("Black"));
Run Code Online (Sandbox Code Playgroud)

然后我想停止迭代并抛出异常.
有办法吗?

exception java-8 java-stream

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

java8 stream - 过滤地图和聚合

可以说我有一个房间列表

List<Room> rooms;
Run Code Online (Sandbox Code Playgroud)

每个房间都有人员名单.

使用java8流我想迭代房间列表,获取所有人,在每个节点上执行一些方法(doSomething())并获得所有过滤对象的列表.

这是使用java 8的最佳实践吗?

List<Asset> pesonsList= new ArrayList<>();
for (Room room : rooms) 
     room.getPersonsList().stream()
                       .filter(person -> person.isTall())
                       .forEach(person -> {
                               doSomething(person);
                               pesonsList.add(person);
                       });
Run Code Online (Sandbox Code Playgroud)

java-8 java-stream

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

Java Stream BufferedReader文件流

我正在使用Java 8 Streams从csv文件创建流.我正在使用BufferedReader.lines(),我阅读了以下文档BufferedReader.lines():

在执行终端流操作之后,不能保证读取器将处于从中读取下一个字符或行的特定位置.

public class Streamy {
    public static void main(String args[]) {
        Reader reader = null;
        BufferedReader breader = null;
        try {
            reader = new FileReader("refined.csv");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        breader = new BufferedReader(reader);
        long l1 = breader.lines().count();
        System.out.println("Line Count " + l1); // this works correctly

        long l2 = breader.lines().count();
        System.out.println("Line Count " + l2); // this gives 0
    }
}
Run Code Online (Sandbox Code Playgroud)

它看起来像是第一次读取文件后,读者无法进入文件的开头.解决这个问题的方法是什么?

bufferedreader java-8 java-stream

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

一行检查String是否包含bannedSubstrings

我有一个String title和一个List<String> bannedSubstrings.现在我想执行一行检查是否title没有bannedSubstrings.

我的方法:

if(bannedSubstrings.stream().filter(bannedSubstring -> title.contains(bannedSubstring)).isEmpty()){
    ...
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有isEmpty()流的方法.那你怎么解决这个问题呢?有一线解决方案吗?

java string lambda java-8 java-stream

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

我可以在IBM的Bluemix应用程序平台上使用Java 8吗?

我想在Bluemix独立的java应用程序中使用Java 8功能,这是默认支持还是我需要改变一些配置?

java-8 ibm-cloud

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

检测TCP连接重置的方法

我已经制作了一个类似telnet的小应用程序,目前我知道两个套接字无法通信的唯一方法是在SocketException抛出"连接重置"消息时(当我轮询输入时).然而,它在我的应用程序中不会产生问题,因为我可以捕获异常,但有没有办法让我测试连接是否在我轮询输入之前已经重置,或者是唯一的方法是捕获异常?方法必须是Java API的一部分(没有3.方).

没有Socket类的方法似乎能够回答这个问题,而且我无法在网上找到任何东西.

java sockets tcp java-8

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

如何在Restlet中注册Jackson Jdk8模块

是否可以jackson-datatype-jdk8在Restlet org.restlet.ext.jackson扩展包中注册该模块?我需要利用这个新Optional功能.我的猜测是它应该可以通过转换器服务(getConverterService())来访问,但是我在文档中找不到任何可以确定如何设置模块的内容.

json jackson restlet-2.0 java-8

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

方法引用和链式谓词

我正在尝试用方法引用来压缩我的代码.这是我要改进的一条线:

assertThat("only true & false strings allowed",
        records.stream().map(Record::getType)
        .allMatch(s -> "true".equals(s) || "false".equals(s)));
Run Code Online (Sandbox Code Playgroud)

使用方法参考,它可以更好:

assertThat("only true & false strings allowed",
       records.stream().map(Record::getType).allMatch("true"::equals));
Run Code Online (Sandbox Code Playgroud)

但是,无论如何我可以在谓词中添加"false"吗?

java predicate java-8 java-stream method-reference

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

使用Java 8为Gson编写序列化程序

我有一个自己的类,MyDate并希望为Gson编写一个序列化器.此代码有效:

GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(MyDate.class, new JsonSerializer<MyDate>() {
    @Override
    public JsonElement serialize(MyDate date, Type typeOfSrc, JsonSerializationContext context) {
        return new JsonPrimitive(date.toString());
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,我想使用Java 8的强大功能,因此尝试过

builder.registerTypeAdapter(MyDate.class, (date, typeOfSrc, context) ->new JsonPrimitive(date.toString()));
Run Code Online (Sandbox Code Playgroud)

但是这里的日食告诉我

此表达式的目标类型必须是功能接口

Java 8代码有什么问题?

java serialization json gson java-8

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