安装intellij并添加sdk路径到项目结构,但当我尝试运行时我得到:
Error: Cannot run program "/home/$USER/java/jdk1.8.0_121/bin/java"
(in directory"/home/$USER/.intelliJIdea2016.3/system/compile-server"):
error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)
两个文件(/home/$USER/java/jdk1.8.0_121/bin/java和/home/$USER/.intelliJIdea2016.3/system/compile-server)都存在.
我正在使用Ubuntu 16.10
为了防止实现细节泄漏,而不是返回,例如,Collection<MyCoolObject>可以实现Iterable<MyCoolObject>,然后需要Iterator<T>从Iterable接口实现.因此,无论如何管理内部数据结构,对元素的访问都是通过Iterator.
使用Java 8,可能希望添加Stream<MyCoolObject> stream()到MyCoolObject.(另请参阅:Java 8 Lambdasstream一书中支持的建议).虽然添加方法并不困难(我确实阅读了关于为什么Iterable不提供流的问题),但Java似乎没有添加一个接口来反映这个想法.(好吧,可能因为使用CORBA的东西而存在一个不同的名称).Streamable<T>Iterable<T>Streamable
我想,我也跟着为什么加入应答Stream到Iterable了可能存在问题,但我不明白为什么一个Streaming<T>已经不能提供的接口.例如,Collections可以实现Streaming<T>接口,并且可以使人们可以期待stream()方法的其他对象更清楚.
基于对上述引用问题的答案,可以Stream从Iterable通过获得
Stream s = StreamSupport.stream(iter.spliterator(), false);
Run Code Online (Sandbox Code Playgroud)
但这看起来似乎很多工作,MyObject可能只想实现stream()允许对象的用户这样做
myObject.stream().filter(...).collect(...)
Run Code Online (Sandbox Code Playgroud)
没有来自迭代器的干预转换.
缺少流媒体功能对象的接口是否有原因?有没有比仅仅stream()在MyCoolObject上实现并让某人查看Javadoc以便他们知道它有stream()方法更好的方法?
或者,很可能,我是否误解了Stream的方法?
(另外,我stream()在CoolObject中实现,但后来忘记实现parallelStream(),这可以通过使用接口来缓解).
我想获取输入并在其上应用并行流,然后我想输出为列表.输入可以是我们可以应用流的任何列表或任何集合.
我担心的是,如果我们想要输出作为映射它们,我们有一个来自java的选项就像
list.parallelStream().collect(Collectors.toConcurrentMap(args))
Run Code Online (Sandbox Code Playgroud)
但是我没有选择以线程安全的方式从并行流中收集以提供列表作为输出.我看到另外一个选项可供使用
list.parallelStream().collect(Collectors.toCollection(<Concurrent Implementation>))
通过这种方式,我们可以在collect方法中提供各种并发实现.但我认为java.util.concurrent中只存在CopyOnWriteArrayList List实现.我们可以在这里使用各种队列实现,但那些不会像列表一样.我的意思是我们可以解决这个问题.
如果我想要输出列表,你能指导一下最好的方法吗?
注意:我找不到与此相关的任何其他帖子,任何参考都会有所帮助.
int[] ar1 = {1,2,3};
int[] ar2 = {1,2,3};
Run Code Online (Sandbox Code Playgroud)
输出:
{2,3,4,3,4,5,4,5,6}
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情:
IntStream.range(0,ar1.length).map(x -> IntStream.range(0,ar2.length).map(y -> ar1[y]+ar2[x]));
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
类型不匹配:无法转换
IntStream为int.
如何使用流将Java 8中的每个值ar1与每个值相加ar2?
我希望实现这样的目标:
items.stream()
.filter(s-> s.contains("B"))
.forEach(s-> s.setState("ok"))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
过滤,然后从过滤结果中更改属性,然后将结果收集到列表中.但是,调试器说:
无法
collect(Collectors.toList())在原始类型上调用void.
我需要2个流吗?
这是一个演示该问题的简单类:
package com.mimvista.debug;
public class DefaultCollisionTest {
public static interface Interface1 {
public String getName();
}
public static interface Interface2 {
public default String getName() { return "Mr. 2"; };
}
public static <X extends Interface1&Interface2> String extractName(X target) {
return target.getName();
}
}
Run Code Online (Sandbox Code Playgroud)
Eclipse(Neon 2)愉快地编译这个类,而javac(JDK 1.8.0_121)吐出以下编译错误:
$ javac src/com/mimvista/debug/DefaultCollisionTest.java
src\com\mimvista\debug\DefaultCollisionTest.java:13: error: class INT#1 inherits abstract and default for getName() from types Interface2 and Interface1
public static <X extends Interface1&Interface2> String extractName(X target) {
^
where INT#1 is an intersection …Run Code Online (Sandbox Code Playgroud) TL; DR; 我正在寻找一个可以查找某个中间操作或终端操作的地方.我在哪里可以找到这样的文件?
编辑这与如何确保java8流中的处理顺序不重复?,因为该问题没有提供全面的操作清单.
该软件包的文件说:
流是否具有遭遇顺序取决于源和中间操作
为了确保整个流操作中的订购维护,您必须研究流的源,所有中间操作和终端操作的文档,以确定它们是否维护订单(或者源是否在第一个订单中有订单)地点).
这一切都很好,但我应该查看哪些文档?该软件包文件提到了这样的例子map,保证订货,但它没有一个详尽的清单.Stream类的javadoc记录了一些中间操作,但不是全部.举个例子map:
返回一个流,该流包含将给定函数应用于此流的元素的结果.
这是一个中间操作.
要么 filter
返回由与此给定谓词匹配的此流的元素组成的流.
这是一个中间操作.
这些都没有描述它们是否保留了排序.
实际上,每个中间操作都默认保留订单.唯一的例外是:
- unordered(),它删除了排序约束.
- sorted()改变了顺序.
如果没有明确指定,您可以假设操作保持订单.即使distinct()保持顺序,但它为并行流增加了很多复杂性.
但是有任何官方文件可以支持吗?
实际上有两个单独的排序问题.
例如,并行map操作可以以任意顺序遍历所有元素(违反2.),但仍然保持返回流中的顺序(服从1.)
使用Java8流API从列表中获取随机元素的最有效方法是什么?
Arrays.asList(new Obj1(), new Obj2(), new Obj3());
Run Code Online (Sandbox Code Playgroud)
谢谢.
我在Java 8(1.8.0_77)和Java 9(Java HotSpot(TM)64位服务器VM(构建9 + 181,混合模式)中尝试了一些代码)
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("eee", Locale.GERMAN);
DayOfWeek mo = dtf.parse("Mo", DayOfWeek::from);
System.out.println("mo = " + mo);
Run Code Online (Sandbox Code Playgroud)
我不太熟悉这些类的细节,但在Java 8中这个工作,打印:
mo =星期一
在Java 9中,它失败了
线程"main"中的异常java.time.format.DateTimeParseException:无法在java.base上的java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1988)的索引0处解析文本"Mo"在day.main(day.java:10)的/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1890)
任何想法,这是可重现的吗?
因此,在格式化时:使用此代码:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("eee", Locale.GERMAN);
String format = dtf.format(DayOfWeek.MONDAY);
System.out.println("format = " + format);
Run Code Online (Sandbox Code Playgroud)
jdk1.8.0-77:
格式= Mo.
jdk-9(build 9 + 181)
格式= Mo.
我正在使用RestAssured 2.8.0并且我正在尝试设置自己的超时(对于网关超时),所以如果我在X毫秒后没有得到响应我想要中止.
我试过了:
public static ValidatableResponse postWithConnectionConfig(String url, String body, RequestSpecification requestSpecification, ResponseSpecification responseSpecification) {
ConnectionConfig.CloseIdleConnectionConfig closeIdleConnectionConfig = new ConnectionConfig.CloseIdleConnectionConfig(1L, TimeUnit.MILLISECONDS);
ConnectionConfig connectionConfig = new ConnectionConfig(closeIdleConnectionConfig);
RestAssuredConfig restAssuredConfig = new RestAssuredConfig().connectionConfig(connectionConfig);
return given().specification(requestSpecification)
.body(body)
.config(restAssuredConfig)
.post(url)
.then()
.specification(responseSpecification);
}
Run Code Online (Sandbox Code Playgroud)
要么
ConnectionConfig connectionConfig = new ConnectionConfig()
.closeIdleConnectionsAfterEachResponseAfter(10L, TimeUnit.MILLISECONDS);
RestAssuredConfig restAssuredConfig = new RestAssuredConfig().connectionConfig(connectionConfig);
Run Code Online (Sandbox Code Playgroud)
我也尝试添加
.queryParam("SO_TIMEOUT", 10)
Run Code Online (Sandbox Code Playgroud)
要么
.queryParam("CONNECTION_MANAGER_TIMEOUT", 10)
Run Code Online (Sandbox Code Playgroud)
似乎没什么用.它不会中止我的查询
java-8 ×10
java ×9
java-stream ×5
eclipse ×1
generics ×1
httpclient ×1
java-9 ×1
java-time ×1
javac ×1
lambda ×1
rest-assured ×1