Tag: java 8

Java 8的方式与枚举工作

我想知道在Java 8中处理枚举值的最好方法是什么。 特别是当你需要获取所有的值并将其添加到某个地方时,例如,假设我们有以下枚举: public enum Letter { A, B, C, D; } 我当然可以做到以下几点: for (Letter l : Letter.values()) { foo(l); } 但是,我也可以将以下方法添加到枚举定义中: public static Stream<Letter> stream() { return Arrays.stream(Letter.values()); } 然后从上面replace为: Letter.stream().forEach(l -> foo(l)); 这种方法是否正确,或者在devise或性能方面有问题? 另外,为什么不枚举有一个stream()方法?

Java 8:使用换行符和缩进格式化lambda

我想用lambda缩进实现如下: 多线声明: String[] ppl = new String[] { "Karen (F)", "Kevin (M)", "Lee (M)", "Joan (F)", "Des (M)", "Rick (M)" }; List<String> strings = Arrays.stream(ppl) .filter( (x) -> { return x.contains("(M)"); } ).collect(Collectors.toList()); strings.stream().forEach(System.out::println); 单行声明: List<String> strings = Arrays.stream(ppl) .map((x) -> x.toUpperCase()) .filter((x) -> x.contains("(M)")) .collect(Collectors.toList()); 目前,Eclipse正在自动格式化为以下内容: 多线声明: String[] ppl = new String[] { "Karen […]

Lambdaexpression式与方法参考

IntelliJ不断build议我用方法引用replace我的lambdaexpression式。 他们之间有没有客观的区别?

Java 8 – 省去繁琐的收集方法

Java 8的streamAPI是非常好的function,我绝对喜欢它。 有一件事让我感到厌烦,那就是我有90%的时间想把收集和输出作为集合input。 结果是我必须始终调用stream()和collect()方法: collection.stream().filter(p->p.isCorrect()).collect(Collectors.toList()); 有没有任何Java API,可以让我跳过stream,直接操作集合(如C#中的linq ?): collection.filter(p->p.isCorrect)

什么时候应该使用stream?

当我使用一个List及其stream()方法时,我遇到了一个问题。 虽然我知道如何使用它们,但我不清楚何时使用它们。 例如,我有一个列表,其中包含到不同位置的各种path。 现在,我想检查一个给定的path是否包含列表中指定的任何path。 我想根据是否满足条件返回一个boolean 。 这当然不是一个艰巨的任务本身。 但是我想知道我应该使用stream还是for( – 每个)循环。 列表 private static final List<String> EXCLUDE_PATHS = Arrays.asList(new String[]{ "my/path/one", "my/path/two" }); 示例 – stream private boolean isExcluded(String path){ return EXCLUDE_PATHS.stream().map(String::toLowerCase).filter(path::contains).collect(Collectors.toList()).size() > 0; } 示例 – For-Each循环 private boolean isExcluded(String path){ for (String excludePath : EXCLUDE_PATHS) { if(path.contains(excludePath.toLowerCase())){ return true; } } return false; } […]

Java 8的Boolean.logicalOr方法

在Java中,新增了Boolean类中的新方法。 我们来谈谈其中之一 public static boolean Boolean.logicalOr(boolean a , boolean b) 现在,我的问题是,他们为什么需要? 以下两种情况有什么区别? boolean result = a || b; 或者Boolean result = Boolean.logicalOr(a,b); 关于Boolean.logicalOr()什么特别之处,我应该什么时候更喜欢一个。

Java 8:Instant和LocalDateTime有什么区别?

我知道: 即时是计算的“技术”时间戳表示(纳秒)。 LocalDateTime是date/时钟表示,包括人类的时区。 仍然在最后IMO可以作为types的大多数应用程序的用例。 举个例子:目前我正在运行一个批处理作业,我需要根据date计算下一次运行,而我正在努力寻找这两种types之间的优点/缺点(除了Instant和时区部分的纳秒精度优势LocalDateTime)。 你能命名一些应用程序的例子,只有即时或LocalDateTime应该使用? 编辑:谨防LocalDateTime有关精度和时区的文件误读

如何确保java8stream中的处理顺序?

我想处理XML java对象内的列表。 我必须确保处理所有元素,以便我收到它们。 因此,我应该在每个使用的stream上调用sequential吗? list.stream().sequential().filter().forEach() 或者只要不使用并行性就可以使用stream? list.stream().filter().forEach()

在Java 8中迭代枚举

是否有可能通过使用Lambdaexpression式迭代Enumeration ? 以下代码片段的Lambda表示是什么: Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces(); while (nets.hasMoreElements()) { NetworkInterface networkInterface = nets.nextElement(); } 我没有发现任何stream。

将java java支持lambdaexpression式在java 8?

据我所知,dalvik vm中的“java”在API和体系结构等方面与Java se不同,但语法却一直如此。 (如果我错了,请纠正我) 现在在java 8中lambdaexpression式的支持即将被释放,将android的java跟着它? 谷歌或aosp诺言使达尔维克一致与Java SE? 更新:现在在Android 4.4 Kit Kat(API 19)中,Java 7语法已被官方支持。 来自android.com