我试图IntStream从一个n维int数组中获得一个.有一个很好的API方法吗?我知道两个流的连接方法.
我正在使用IntelliJ IDEA 13和Java 8,并想知道如何自动完成lambdas.在Java 8之前,我当然使用了匿名内部类.我通过输入"new"并点击Ctrl+ 来自动完成Space:

并选择第一个选项.
现在使用Java 8我也想生成lambdas,推断参数和所有,但我找不到它的自动完成.
请注意,上面的示例非常简单,但是当您有多个泛型类型的参数时,例如JavaFX Listeners等,自动完成功能就派上用场了.
我注意到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 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 8方法引用双冒号operator(::)和new运算符(例如MyType::new)时,我在Spring of Spring Tool套件(STS)中遇到此错误:
无法解析org.eclipse.jdt.annotation.NonNull类型.它是从所需的.class文件间接引用的
如何摆脱这个错误?
随着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) 有一种方法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 11,我想知道与Java 11兼容的最小Spring版本是什么.
我目前正在使用Java 8和Spring 4.2.7.
我认为我研究过的所有资源都强调一个流只能被消耗一次,消费是通过所谓的终端操作完成的(这对我来说非常清楚).
出于好奇我试过这个:
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)
?
我想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 ×10
java-8 ×10
java-stream ×4
collections ×1
collectors ×1
date ×1
eclipse ×1
java-11 ×1
java-time ×1
lambda ×1
spring ×1