我正在将原始映射Stream到a Stream<Integer>,然后将元素收集到a List<Integer>.
为什么我必须将结果投射collect(Collectors.toList())到List<Integer>我的映射器.map(str -> ((String)str).length())- 已映射到Integer?
我的代码:
List list = Arrays.asList("test", "test2");
List<Integer> lengths = (List<Integer>) list.stream()
.map(str -> ((String)str).length())
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
如果我不使用raw List,则无需强制转换:
List<String> list = Arrays.asList("test", "test2");
List<Integer> lengths = list.stream()
.map(str -> str.length())
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud) 我想在typescript中对对象数组进行分组.我以传统或命令的方式做到如下:
public datas: Data[];
public dtoMap: Map<String, DataDTO[]> = new Map<String, DataDTO[]>();
private groupBy(): void {
for (let item of this.datas) {
let valueList: DataDTO[] = this.dtoMap.get(item.type);
if (isUndefined(valueList) || valueList === null) {
valueList = new Array<DataDTO>();
}
valueList.push(convertToDTO(item));
this.dtoMap.set(item.type, valueList);
}
}
Run Code Online (Sandbox Code Playgroud)
但在Java中,我写了类似的方法如下:
public Map<String, List<DataDTO>> getDataMap(String defId, List<Data> datas) {
return datas.stream().map(item -> convertToDTO(defId, item)).collect(Collectors.groupingBy(DataDTO::getType, Collectors.toList()));
}
Run Code Online (Sandbox Code Playgroud)
你能帮助改进打字稿方法吗?使用TypeScript中的属性对对象数组进行分组的最佳方法是什么?谢谢
我有一个特殊的文件,其中的行被终止 '\001'.
我想逐行阅读这个文件.我一直在用Files.lines(path).但现在这个失败了,因为这些行没有被换行符终止.
什么是最好的方法?
什么是迭代Java 8 Stream的最佳方式,这样我可以为每个元素(forEach)执行一个函数,而为每10个元素执行另一个函数.使用foreach的每个元素都显示在下面.我可以使用什么功能来拦截eveyr nth元素并执行第二个函数调用?
示例代码如下: -
Stream<String> strings = Files.lines(path); //some stream
stream.forEach(s -> System::println)// every element but how can i perform
Run Code Online (Sandbox Code Playgroud) 在Java中我们可以修改List如下
for (Customer cust : customers) {
cust.setAge(15);
cust.setName("Customer1");
cust.setAddress("Address1");
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,可以用一个循环修改多个属性.
在JDK8中,可以用以下内容更新列表数据forEach:
customers.forEach(cust -> cust.setAge(15));
Run Code Online (Sandbox Code Playgroud)
但是我想用java 8修改多个属性.怎么做呢?
我想测试调用某些API的代码:
public <T extends MessageLite> ApiFuture<String> publish(final T message) throws Exception {
}
public <T extends MessageLite> ApiFuture<String> publish(final T message, final ApiFutureCallback<T> futureCallback) throws Exception {
}
public <T> String publishSynchronous(final String message, final ApiFutureCallback<T> futureCallback) throws Exception {
}
Run Code Online (Sandbox Code Playgroud)
在我的测试中,我使用了嘲笑模拟,然后我想验证它是否被具有字段的原型对象(扩展了MessageLite)调用 isSuccess = false
我已经厌倦了这段代码:
verify(customPublisher, times(0)).publish(isFailureResult(), anyObject());
Run Code Online (Sandbox Code Playgroud)
和这个匹配器:
public class FailResultMatcher extends TypeSafeMatcher<MessageLite> {
@Override
protected boolean matchesSafely(final MessageLite sentResult) {
return !((SdkResult)sentResult).getIsSuccess();
}
public static FailResultMatcher isFailureResult() {
return new FailResultMatcher();
}
@Override
public void describeTo(final Description …Run Code Online (Sandbox Code Playgroud) 我试图过滤子文档.
样本记录:
[Document{{_id=597608aba213742554f537a6, upp_id=, content_id=597608aba213742554f537a3, idmapping=Document{{ptype=PDF, clientid=12345, normalizedclientid=12345, systeminstanceid=, sourceschemaname=, platforminternalid=0987654321}}, batchid=null, locale=en_US}}]
Run Code Online (Sandbox Code Playgroud)
我需要使用idmapping.ptype = PDF进行过滤
MongoCursor<Document> cursor = mailboxitemCollection.find(whereClause).iterator();
List<Document> documentList = new ArrayList<Document>();
while (cursor.hasNext()) {
Document object = cursor.next();
documentList.add(object);
}
List<Document> outList = documentList.stream()
.filter(p -> p.getInteger(CommonConstants.VISIBILITY) == 1
&& (!StringUtils.isEmpty(req.ptype())? (p.getString("idmapping.ptype").equalsIgnoreCase(req.ptype())) : true)
).parallel().sequential().collect(Collectors.toCollection(ArrayList::new));
System.out.println(outList);
System.out.println(outList.size());
Run Code Online (Sandbox Code Playgroud)
我得到Null Point异常,无法从List documentList中读取sub/embed文档.
先感谢您!Bharathi
这一行功能编程代码可以: 2*3 + 4*3 + 6*3 + 8*3 + 10*3操作.
int sum = IntStream.rangeClosed(1,10) /* closed range */
.filter(x -> x%2 == 0) /* filter to even numbers in range */
.map(x -> x*3) /* map */
.sum(); /* actual sum operation happens */
System.out.println(sum); /* prints 90 */
Run Code Online (Sandbox Code Playgroud)
我明白它在做什么.我想知道在内存分配方面发生了什么?我们可以使用与上述操作相似的旧替代方案.这很容易理解,但基于Lambda的代码更具表现力.
int sum=0;
for(int i=1; i<=10;i++) {
if(i%2 == 0) {
sum=sum+i*3;
}
}
System.out.println(sum); /* prints 90 */
Run Code Online (Sandbox Code Playgroud) 我如何使用Java Optional API以更优雅的方式重写以下代码:
first == null || second == null ? null : first + second;
Run Code Online (Sandbox Code Playgroud)
null如果两个变量中的任何一个是null或其他地方的总和,则代码应该返回.
java-8 ×10
java ×9
java-stream ×3
angular ×1
file-io ×1
foreach ×1
lambda ×1
mocking ×1
mockito ×1
mongodb ×1
optional ×1
stream ×1
typescript ×1
unit-testing ×1