Questions tagged «java-8»

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

25
如何在Mac上安装Java 8
我想使用需要Java 8的最新JavaFX进行一些编程。我正在使用IntelliJ 13 CE和Mac OS X 9 Mavericks。我运行了Oracle的Java 8安装程序,文件看起来像最终在 /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk 但以前的版本在 /System/Library/Java/JavaFrameworks/jdk1.6.... 不知道为什么要用最新的安装程序/Library代替它/System/Library(也不知道有什么区别)。但是/usr/libexec/java_home找不到1.8,所以我找到的有关如何设置当前Java版本的所有帖子都不起作用。我尝试添加一个符号链接以使其看起来像1.8一样在/System/Library...路径中,但这无济于事。/usr/libexec/java_home -V仍然只列出了旧的Java 1.6。 具有讽刺意味的是,“系统偏好设置”下的“ Java”控制面板仅显示Java 1.8! 为什么Oracle的安装程序没有将它放到真正的位置?我该如何解决这个问题?

17
Java 8中的::(双冒号)运算符
我正在探索Java 8源代码,发现代码的这一特殊部分非常令人惊讶: //defined in IntPipeline.java @Override public final OptionalInt reduce(IntBinaryOperator op) { return evaluate(ReduceOps.makeInt(op)); } @Override public final OptionalInt max() { return reduce(Math::max); //this is the gotcha line } //defined in Math.java public static int max(int a, int b) { return (a >= b) ? a : b; } 是Math::max类似方法指针的东西吗?普通static方法如何转换为IntBinaryOperator?
955 java  java-8 

21
Java 8 List <V>到Map <K,V>
我想使用Java 8的流和lambda将对象列表转换为Map。 这就是我在Java 7及以下版本中编写它的方式。 private Map&lt;String, Choice&gt; nameMap(List&lt;Choice&gt; choices) { final Map&lt;String, Choice&gt; hashMap = new HashMap&lt;&gt;(); for (final Choice choice : choices) { hashMap.put(choice.getName(), choice); } return hashMap; } 我可以使用Java 8和Guava轻松完成此操作,但我想知道如何在没有Guava的情况下执行此操作。 在番石榴: private Map&lt;String, Choice&gt; nameMap(List&lt;Choice&gt; choices) { return Maps.uniqueIndex(choices, new Function&lt;Choice, String&gt;() { @Override public String apply(final Choice …



1
为什么array [idx ++] + =“ a”在Java 8中增加一次idx,而在Java 9和10中增加两次?
为了挑战,一位高尔夫球手代码 编写了以下代码: import java.util.*; public class Main { public static void main(String[] args) { int size = 3; String[] array = new String[size]; Arrays.fill(array, ""); for(int i = 0; i &lt;= 100; ) { array[i++%size] += i + " "; } for(String element: array) { System.out.println(element); } } } 在Java …
751 java  java-8  javac  java-9  java-10 





6
如果可能,是否应该始终使用并行流?
使用Java 8和lambda,可以很容易地将集合作为流进行迭代,也很容易使用并行流。docs中的两个示例,第二个示例使用parallelStream: myShapesCollection.stream() .filter(e -&gt; e.getColor() == Color.RED) .forEach(e -&gt; System.out.println(e.getName())); myShapesCollection.parallelStream() // &lt;-- This one uses parallel .filter(e -&gt; e.getColor() == Color.RED) .forEach(e -&gt; System.out.println(e.getName())); 只要我不关心顺序,使用并行会一直有益吗?有人会认为,更快地将工作划分到更多的内核上。 还有其他考虑事项吗?什么时候应该使用并行流,什么时候应该使用非并行流? (问这个问题引发了关于如何以及何时使用并行流的讨论,不是因为我认为始终使用并行流是一个好主意。)

6
通过谓词查找第一个元素
我刚刚开始使用Java 8 lambda,并且正在尝试实现一些我在函数式语言中惯用的东西。 例如,大多数功能语言都具有某种对序列进行操作的find函数,或者对返回谓词为的第一个元素的列表进行操作true。我看到的在Java 8中实现此目标的唯一方法是: lst.stream() .filter(x -&gt; x &gt; 5) .findFirst() 但是,这对我来说似乎效率很低,因为过滤器将扫描整个列表,至少在我看来(可能是错误的)。有没有更好的办法?
504 java  java-8  java-stream 


8
在java.time.LocalDateTime和java.util.Date之间进行转换
Java 8具有用于日期和时间的全新API。此API中最有用的类之一是LocalDateTime,用于保存与时区无关的date-with-time值。 java.util.Date为此,可能有数百万行的代码使用遗留类。因此,当连接新旧代码时,将需要在两者之间进行转换。由于似乎没有直接的方法可以完成此操作,因此该怎么办呢?

25
抛出异常的Java 8 Lambda函数?
我知道如何创建对具有String参数的方法的引用,并返回int,它是: Function&lt;String, Integer&gt; 但是,如果该函数引发异常,则将其定义为: Integer myMethod(String s) throws IOException 我将如何定义此参考?
469 java  lambda  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.