标签: java-8

从java中的二维数组流

我试图IntStream从一个n维int数组中获得一个.有一个很好的API方法吗?我知道两个流的连接方法.

java java-8 java-stream

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

如何在IntelliJ IDEA中自动完成lambdas?

我正在使用IntelliJ IDEA 13和Java 8,并想知道如何自动完成lambdas.在Java 8之前,我当然使用了匿名内部类.我通过输入"new"并点击Ctrl+ 来自动完成Space:

自动完成新的

并选择第一个选项.

现在使用Java 8我也想生成lambdas,推断参数和所有,但我找不到它的自动完成.

请注意,上面的示例非常简单,但是当您有多个泛型类型的参数时,例如JavaFX Listeners等,自动完成功能就派上用场了.

java lambda intellij-idea java-8

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

DateTimeFormatter月份模式字母"L"失败

我注意到java.time.format.DateTimeFormatter无法按预期解析.见下文:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Play {
  public static void tryParse(String d,String f) {
    try { 
      LocalDate.parse(d, DateTimeFormatter.ofPattern(f)); 
      System.out.println("Pass");
    } catch (Exception x) {System.out.println("Fail");}
  }
  public static void main(String[] args) {
    tryParse("26-may-2015","dd-L-yyyy");
    tryParse("26-May-2015","dd-L-yyyy");
    tryParse("26-may-2015","dd-LLL-yyyy");
    tryParse("26-May-2015","dd-LLL-yyyy");
    tryParse("26-may-2015","dd-M-yyyy");
    tryParse("26-May-2015","dd-M-yyyy");
    tryParse("26-may-2015","dd-MMM-yyyy");
    tryParse("26-May-2015","dd-MMM-yyyy");
  }
}
Run Code Online (Sandbox Code Playgroud)

只有最后一次尝试tryParse("26-May-2015","dd-MMM-yyyy");将"通过".根据文档LLL应该能够解析出文本格式.也不是大写'M'与小写'm'的细微差别.

这真的很烦人,因为我无法默认解析Oracle DB默认格式化的字符串

SELECT TO_DATE(SYSDATE,'DD-MON-YYYY') AS dt FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

同样,对于以下程序:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Play {
  public static void output(String f) {
    LocalDate d = LocalDate.now();
    Locale l = …
Run Code Online (Sandbox Code Playgroud)

java date java-8 java-time

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

Java 8中"System.out :: println"的用法是什么?

我在java 8中看到了一个迭代集合的代码.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
numbers.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

功能是System.out::println什么?以上代码如何迭代List.

运营商的用途是::什么,我们可以在哪里使用这个运营商?

java java-8

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

无法解析org.eclipse.jdt.annotation.NonNull类型.它是从所需的.class文件间接引用的

当我使用Java 8方法引用双冒号operator(::)和new运算符(例如MyType::new)时,我在Spring of Spring Tool套件(STS)中遇到此错误:

无法解析org.eclipse.jdt.annotation.NonNull类型.它是从所需的.class文件间接引用的

如何摆脱这个错误?

java eclipse java-8 spring-tool-suite method-reference

24
推荐指数
3
解决办法
6041
查看次数

从Java对象创建流的最简单方法是什么?

随着Collection一切都清楚了,但是怎么样以下几点:

object一种count()方法和getPart(int i)方法.因此,提取所有对象会产生以下样板代码:

List<Part> result = new ArrayList<Part>();
for (int i = 0, i < object.count(), i++) {
    result.add(object.getPart(i));        
}
return result.stream(); 
Run Code Online (Sandbox Code Playgroud)

是否有任何标准的方法来传递2个生产者:() -> object.count()(int i) -> object.getPart(i)创建一个流?像这样:

SomeUtil.stream(object::count, object::getPart);
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

在Java8中的可选项中抛出异常

有一种方法get(sql)(我不能修改它).这个方法返回MyObjects,它必须在try catch块中,因为JqlParseException那里是可能的.我的代码是:

String sql = something;
try{
   MyObject object = get(sql);
} catch(JqlParseException e){
   e.printStackTrace();
} catch(RuntimeException e){
   e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

我想删除try catch并使用Optional类,我试过:

MyObject object = Optional.ofNullable(get(sql)).orElseThrow(RuntimeException::new);
Run Code Online (Sandbox Code Playgroud)

但是那里的IDE力量也尝试了.并为:

MyObject object = Optional.ofNullable(get(sql)).orElseThrow(JqlParseException::new));
Run Code Online (Sandbox Code Playgroud)

是一个错误(在IDE中)The type JqlParseException does not define JqlParseException() that is applicable.有没有办法避免尝试catch块并使用可选的?

java java-8

24
推荐指数
2
解决办法
5万
查看次数

与Java 11兼容的最低Spring版本

我需要很快将应用程序升级到Java 11,我想知道与Java 11兼容的最小Spring版本是什么.

我目前正在使用Java 8和Spring 4.2.7.

java spring java-8 java-11

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

为什么我必须用Java链接Stream操作?

我认为我研究过的所有资源都强调一个流只能被消耗一次,消费是通过所谓的终端操作完成的(这对我来说非常清楚).

出于好奇我试过这个:

import java.util.stream.IntStream;

class App {
    public static void main(String[] args) {
        IntStream is = IntStream.of(1, 2, 3, 4);
        is.map(i -> i + 1);
        int sum = is.sum();
    }
}
Run Code Online (Sandbox Code Playgroud)

最终会抛出一个运行时异常:

Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:229)
    at java.util.stream.IntPipeline.reduce(IntPipeline.java:456)
    at java.util.stream.IntPipeline.sum(IntPipeline.java:414)
    at App.main(scratch.java:10)
Run Code Online (Sandbox Code Playgroud)

这是常见的,我遗漏了一些东西,但仍然想问:据我所知,这map是一个中间(和懒惰)操作,并且对Stream本身没有任何作用.只有当sum调用终端操作(这是一个急切的操作)时,才会消耗操作流.

但为什么我要把它们连在一起呢?

有什么区别

is.map(i -> i + 1);
is.sum();
Run Code Online (Sandbox Code Playgroud)

is.map(i -> i + 1).sum();
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

24
推荐指数
2
解决办法
2099
查看次数

如何从HashMap <String,List <E >>获取List <E>

我想List<E>从一个Map<String,List<E>>(E是一个随机类)中提取一个stream().

我想要一个使用java 8流的简单单行方法.

我到现在为止尝试过的事情:

HashMap<String,List<E>> map = new HashMap<>();
List<E> list = map.values(); // does not compile
list = map.values().stream().collect(Collectors.toList()); // does not compile
Run Code Online (Sandbox Code Playgroud)

java collections java-8 java-stream collectors

24
推荐指数
3
解决办法
801
查看次数