我的需要是我有一个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 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) 我有一个返回对象列表的函数.获取该列表后,我想将每个对象中的字段设置为相同的值.有没有办法可以将下面的三个(模拟)代码行减少到一个?
List<someObjects> aList = functionReturningList();
aList.stream().forEach(m -> m.setField(fieldValue));
anotherList.addAll(aList);
Run Code Online (Sandbox Code Playgroud) 我有一个包含一些字段的对象,我想检查一些字段是否为空且不为空.有没有一种很好的方法在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)
你有什么建议吗?
注释掉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) ReactiveX不偏向某些特定的并发或异步性源.可以使用线程池,事件循环,非阻塞I/O,演员(例如来自Akka)或任何适合您的需求,风格或专业知识的实现来实现Observable. 客户端代码将其与Observable的所有交互视为异步,无论您的底层实现是阻塞还是非阻塞,然而您选择实现它.
我没有得到这个部分 - " 你的底层实现是阻塞还是非阻塞 ".
你能解释一下吗?或者一些示例代码来解释这个?
我有两个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)
现在我的目标是有一个列表,其中myObject1和myObject5位于前两个位置,而不是其他位置.在Java 8中是否有简单的可能性?
我有一个Stream<Student[]>对象,我需要收集List<Student>
如果我使用,obj.collect(Collectors.toList())那我就明白了List<Student[]>
有没有更好的方法来转换?
我正在通过java 8制作一个项目,但我很困惑可以在窗口xp上运行java 8项目,我不知道我是否使用java 8的新资源,它是否可以在窗口xp中工作,就像在窗口10中工作一样?=)),谢谢!
我有以下代码,并希望在将它们乘以我的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-8 ×10
java ×9
java-stream ×5
asynchronous ×1
epoch ×1
foreach ×1
java-time ×1
localdate ×1
reactivex ×1
rx-java ×1
sorting ×1
spring ×1
spring-boot ×1
windows-xp ×1