Questions tagged «java-8»

对于2014年3月18日发行的Java平台的第8版(内部版本1.8)特定于Java 8的问题,请使用此标记。在大多数情况下,您还应该指定java标记。


4
是否可以在Java 8中强制转换Stream?
是否可以在Java 8中强制转换流?说我有一个对象列表,我可以做这样的事情来过滤掉所有其他对象: Stream.of(objects).filter(c -> c instanceof Client) 不过,在此之后,如果我想与客户做些事情,则需要对每个客户进行转换: Stream.of(objects).filter(c -> c instanceof Client) .map(c -> ((Client) c).getID()).forEach(System.out::println); 这看起来有点难看。是否可以将整个流转换为其他类型?像蒙上了Stream<Object>一个Stream<Client>? 请忽略以下事实:这样做可能意味着不良的设计。我们在计算机科学课上做了类似的事情,所以我一直在研究Java 8的新功能,并且好奇是否有可能。
160 java  java-8  java-stream 

5
如何序列化lambda?
如何优雅地序列化lambda? 例如,下面的代码抛出NotSerializableException。如何在不创建SerializableRunnable“虚拟”界面的情况下进行修复? public static void main(String[] args) throws Exception { File file = Files.createTempFile("lambda", "ser").toFile(); try (ObjectOutput oo = new ObjectOutputStream(new FileOutputStream(file))) { Runnable r = () -> System.out.println("Can I be serialized?"); oo.writeObject(r); } try (ObjectInput oi = new ObjectInputStream(new FileInputStream(file))) { Runnable r = (Runnable) oi.readObject(); r.run(); } }

6
Java Lambda可以有多个参数吗?
在Java中,lambda是否可以接受多种不同类型? 即:单个变量起作用: Function <Integer, Integer> adder = i -> i + 1; System.out.println (adder.apply (10)); Varargs也可以工作: Function <Integer [], Integer> multiAdder = ints -> { int sum = 0; for (Integer i : ints) { sum += i; } return sum; }; //.... System.out.println ((multiAdder.apply (new Integer [] { 1, …
157 java  lambda  java-8 



10
Java 8中使用了哪些功能接口?
我在Java 8中遇到了一个新术语:“功能接口”。在使用lambda表达式时,我只能找到它的一种用法。 Java 8提供了一些内置的功能接口,如果我们想定义任何功能接口,则可以使用@FunctionalInterface注释。它将允许我们在接口中仅声明一个方法。 例如: @FunctionalInterface interface MathOperation { int operation(int a, int b); } 除了仅使用lambda表达式以外,它在Java 8中还有什么用? (这里的问题与我问的问题不同。它问的是为什么在使用lambda表达式时我们需要功能接口。我的问题是:为什么功能接口除了lambda表达式之外还有其他用途?)
154 java  lambda  interface  java-8 

26
Java 8流反向顺序
一般问题:反向流的正确方法是什么?假设我们不知道流包含什么类型的元素,反转任何流的通用方法是什么? 具体问题: IntStream提供了生成特定范围内的整数的范围方法IntStream.range(-range, 0),现在我想将其范围从0切换为负数将不起作用,也无法使用Integer::compare List<Integer> list = Arrays.asList(1,2,3,4); list.stream().sorted(Integer::compare).forEach(System.out::println); 与IntStream我会得到这个编译器错误 错误:(191,0)ajc:sorted()类型中的方法IntStream不适用于参数(Integer::compare) 我在这里想念什么?

9
解析LocalDateTime(Java 8)时,无法从TemporalAccessor获取LocalDateTime
我只是想将Java 8中的日期字符串转换为DateTime对象。运行以下行时: DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); LocalDateTime dt = LocalDateTime.parse("20140218", formatter); 我收到以下错误: Exception in thread "main" java.time.format.DateTimeParseException: Text '20140218' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 2014-02-18 of type java.time.format.Parsed at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1918) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1853) at java.time.LocalDateTime.parse(LocalDateTime.java:492) 语法与此处建议的语法相同,但有例外。我正在使用JDK-8u25。

14
使用带有Lambda的JDK8压缩流(java.util.stream.Streams.zip)
在带有lambda b93的JDK 8中,b93中有一个类java.util.stream.Streams.zip可用于对流进行zip处理(这在Dhananjay Nene的Exploring Java8 Lambdas。Part 1教程中进行了说明)。该功能: 创建一个懒惰且顺序的组合Stream,其元素是将两个流的元素组合在一起的结果。 然而,在b98中,这种现象消失了。实际上,在b98的java.util.stream中Streams甚至无法访问该类。 此功能是否已被移走,如果是的话,如何使用b98简洁地压缩流? 我想到的应用程序是此Shen的java实现中的,我在其中替换了zip功能。 static <T> boolean every(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred) static <T> T find(Collection<T> c1, Collection<T> c2, BiPredicate<T, T> pred) 具有相当冗长的代码的功能(不使用b98的功能)。

2
如何确保java8流中的处理顺序?
我想处理XMLJava对象中的列表。我必须确保处理所有元素,以便收到它们。 因此sequential,stream我应该使用它吗? list.stream().sequential().filter().forEach() 还是只要我不使用并行性就足够使用流? list.stream().filter().forEach()
148 java  java-8  java-stream 

10
您可以将一个流分成两个流吗?
我有一个由Java 8流表示的数据集: Stream<T> stream = ...; 我可以看到如何对其进行过滤以获取随机子集-例如 Random r = new Random(); PrimitiveIterator.OfInt coin = r.ints(0, 2).iterator(); Stream<T> heads = stream.filter((x) -> (coin.nextInt() == 0)); 我还可以看到如何减少该流,例如,获得两个表示数据集的两个随机一半的列表,然后将它们转换回流。但是,是否有直接方法可以从最初的一个生成两个流?就像是 (heads, tails) = stream.[some kind of split based on filter] 感谢您的任何见解。
146 java  java-8  java-stream 


4
了解Java 8中的Spliterator,Collector和Stream
我在理解StreamJava 8中的接口时遇到了麻烦,尤其是与Spliteratorand Collector接口有关的接口。我的问题是我根本无法理解Spliterator和Collector接口的是,作为一个结果,Stream接口仍然有些模糊了我。 Spliterator和和到底是什么Collector,我如何使用它们?如果我愿意写我自己Spliterator或Collector(和可能是我自己Stream在这个过程中),我应该怎样做和不能做? 我阅读了一些分散在网络上的示例,但是由于此处的所有内容仍然是新内容并且随时可能更改,因此示例和教程仍然非常稀疏。

4
如何在Java8中为void(非Void)方法指定函数类型?
我正在玩Java 8,以了解如何发挥一流公民的作用。我有以下片段: package test; import java.util.*; import java.util.function.*; public class Test { public static void myForEach(List<Integer> list, Function<Integer, Void> myFunction) { list.forEach(functionToBlock(myFunction)); } public static void displayInt(Integer i) { System.out.println(i); } public static void main(String[] args) { List<Integer> theList = new ArrayList<>(); theList.add(1); theList.add(2); theList.add(3); theList.add(4); theList.add(5); theList.add(6); myForEach(theList, Test::displayInt); …
143 java  java-8 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.