标签: java-8

找出两个长纪元值表示的两个日期之间的差异

我的需要是我有一个Long值,它代表自epoch以来的毫秒值.我希望了解当天和当天之间的天数差异.我正在使用Java8DAYS.between(inputDate, currentDate)

对于我使用的currentDate LocalDateTime currentDate = LocalDateTime.now(); 但是我面临的问题是当我将long值转换为java8 LocalDateTime时.我用的时候

LocalDate date = Instant.ofEpochMilli(1490372528)
  .atZone(ZoneId.systemDefault())
  .toLocalDate();
Run Code Online (Sandbox Code Playgroud)

结果是1970-01-18当我在https://www.epochconverter.com/中输入相同的值时,它给出了Fri, 24 Mar 2017 16:22:08 GMT

为什么会出现这种差异?如何从长值中有效地获取java8日期以在DAYS.between()中使用?

java epoch java-8 java-time localdate

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

如何使用Java8 Stream创建Map?

如何使用java 8流更新Map?至于现在我在做:

        Map<String, Integer> testMap = Maps.newHashMap();

        for(Map.Entry<String,Integer> testEntrySet : testCounts.entrySet()) {
            String name = Utils.cleanName(testEntrySet.getKey());

            if(testMap.containsKey(name)) {
                testMap.put(name, testMap.get(name) +
                        testCounts.get(testEntrySet.getKey()));
            } else {
                testMap.put(name, testCounts.get(testEntrySet.getKey()));
            }

        }
        return testMap;
    }
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

将List中的Objects字段设置为相同的值并返回一个列表

我有一个返回对象列表的函数.获取该列表后,我想将每个对象中的字段设置为相同的值.有没有办法可以将下面的三个(模拟)代码行减少到一个?

List<someObjects> aList = functionReturningList();
aList.stream().forEach(m -> m.setField(fieldValue));
anotherList.addAll(aList);
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

更好的方法来测试非空字段

我有一个包含一些字段的对象,我想检查一些字段是否为空且不为空.有没有一种很好的方法在java 8或apache实用程序中这样做...

我不想做类似的事情

if(myObj.getMyField1 != null || myObj.getMyField1 != "" || myObj.getMyField2 != null || myObj.getMyField2 != "" || myObj.getMyField3 != null || myObj.getMyField3 != "") {} 
Run Code Online (Sandbox Code Playgroud)

这是myObj

@Data // lombok for generating getters and setters
public class Myobj {
   private String myField1;
   private String myField2;
   private String myField3;
   private String myField4;
   private String myField5;

   private AnotherObj myField6;

}
Run Code Online (Sandbox Code Playgroud)

你有什么建议吗?

java spring java-8 spring-boot

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

Stream.concat错误的解决方法

注释掉Stream.concat时,createLazyStream按预期工作,仅在应用终端操作时初始化.

但是如果你取消注释Stream.concat行,那么你会看到即使没有实际使用也没有初始化两个流(没有应用终端操作)

这是java bug,对吧?什么是变通方法?

@Test
public void testConcat() {

    Stream<Integer> stream = createLazyStream();
    // Stream<Integer> result = Stream.concat(stream, createLazyStream());

}

private Stream<Integer> createLazyStream() {
    return StreamSupport.stream(() -> {

        System.out.println("initializing stream");
        return IntStream.range(1,10).spliterator();

    }, Spliterator.ORDERED, false);
}
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

观察者的意见较少?

正如ReactiveX简介中所述- 可观察者的意见较少

ReactiveX不偏向某些特定的并发或异步性源.可以使用线程池,事件循环,非阻塞I/O,演员(例如来自Akka)或任何适合您的需求,风格或专业知识的实现来实现Observable. 客户端代码将其与Observable的所有交互视为异步,无论您的底层实现是阻塞还是非阻塞,然而您选择实现它.

我没有得到这个部分 - " 你的底层实现是阻塞还是非阻塞 ".

你能解释一下吗?或者一些示例代码来解释这个?

asynchronous reactive-programming java-8 rx-java reactivex

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

Java 8 - >排序列表取决于其他列表

我有两个java.util.List,例如如下所示:

List<MyObject> myObjects = ...
MyObject myObject1 = ...
MyObject myObject2 = ...
MyObject myObject3 = ...
MyObject myObject4 = ...
MyObject myObject5 = ...
myObjects.add(myObjet1);
...
Run Code Online (Sandbox Code Playgroud)

第二个List看起来像这样:

List<MyObject> otherListObjects = ...
MyObject myObject1 = ...
MyObject myObject5 = ...
Run Code Online (Sandbox Code Playgroud)

现在我的目标是有一个列表,其中myObject1myObject5位于前两个位置,而不是其他位置.在Java 8中是否有简单的可能性?

java sorting java-8

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

使用java流将Stream <Object []>转换为List <Object>

我有一个Stream<Student[]>对象,我需要收集List<Student>

如果我使用,obj.collect(Collectors.toList())那我就明白了List<Student[]>

有没有更好的方法来转换?

java java-8 java-stream

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

Window xp和java 8

我正在通过java 8制作一个项目,但我很困惑可以在窗口xp上运行java 8项目,我不知道我是否使用java 8的新资源,它是否可以在窗口xp中工作,就像在窗口10中工作一样?=)),谢谢!

java windows-xp java-8

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

使用stream.foreach()的print元素不起作用

我有以下代码,并希望在将它们乘以我的10之后打印列表元素,但它表示不允许使用void.怎么解决?

List<Integer> integerList = Arrays.asList(10,22,30); 

   long muliplied = integerList.stream()
                                .map(e -> e*10)
                                .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

java foreach java-8 java-stream

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