我有一个列表,我正在流式传输此列表以获取一些过滤数据,如下所示:
List<Future<Accommodation>> submittedRequestList =
list.stream().filter(Objects::nonNull)
.map(config -> taskExecutorService.submit(() -> requestHandler
.handle(jobId, config))).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
在编写测试时,我尝试使用来返回一些数据when():
List<Future<Accommodation>> submittedRequestList = mock(LinkedList.class);
when(list.stream().filter(Objects::nonNull)
.map(config -> executorService.submit(() -> requestHandler
.handle(JOB_ID, config))).collect(Collectors.toList())).thenReturn(submittedRequestList);
Run Code Online (Sandbox Code Playgroud)
我org.mockito.exceptions.misusing.WrongTypeOfReturnValue:
LinkedList$$EnhancerByMockitoWithCGLIB$$716dd84d cannot be returned by submit()出错了。如何使用正确的方法解决此错误when()?
我们如何使用优化此流来收集集合的嵌套级别和根级别.
final Set<String> groupedUsers = new HashSet<>();
groups.stream().forEach(group -> {
groupedUsers.add(group.getTeamLeadId());
groupedUsers.addAll(group.getTeamMemberIds().stream().collect(Collectors.toSet()));
});
Run Code Online (Sandbox Code Playgroud) 我有一个包含多行的文件.每行都可以转换为JSONObject.
示例行,
{"name": "a", "age": 28}
{"name": "b", "age": 20}
{"name": "c", "age": 30}
Run Code Online (Sandbox Code Playgroud)
我正在使用新IO读取此文件
Files.lines(path)
Run Code Online (Sandbox Code Playgroud)
我想使用流并将每一行转换为JSONObject,如,
JSONObject obj = new JSONObject(line);
Run Code Online (Sandbox Code Playgroud)
我没有得到如何使用流和lambda.有什么办法吗?
我有一个练习要解决.我有一个Fox类,它有名字和颜色字段.我的练习是按颜色找出狐狸的频率.
因此我创建了一个HashMap,其中String属性将是狐狸名称,而Integer将是它本身的出现:
Map<String, Integer> freq = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
完成后,我一直在尝试用流编写代码,但我正在努力做到这一点.我写了这样的东西:
foxes.stream()
.map(Fox::getColor)
.forEach()
//...(continued later on);
Run Code Online (Sandbox Code Playgroud)
,其中狐狸是一个清单.
我的问题基本上是语法.如果颜色没有出现,我想做一些事情
freq.put(Fox::getName, 1)
Run Code Online (Sandbox Code Playgroud)
其他
freq.replace(Fox::getName, freq.get(Fox::getName) + 1)
Run Code Online (Sandbox Code Playgroud)
我该怎么把它放在一起?
您好我想使用LocalDateTime JAVA API将这些类型的字符串转换为日期.下面是输入字符串:"1672017",我想根据2017年的数字为167的日期转换为相应的日期.
请知道如何做到这一点
我正在阅读有关函数式编程的基础知识.无论如何,我做了一些例子试图理解这个概念并正确使用它.
我没有掌握这种函数式编程的强大功能.它只是在编写lambda而不是普通代码吗?
如果我们有这个课程:
public class Dinosaurio {
private boolean esMamifero;
private String nombre;
public Dinosaurio(String n, boolean esMam) {...}
//getters and setters
Run Code Online (Sandbox Code Playgroud)
这个功能界面:
@FunctionalInterface
public interface DinosaurioTester {
boolean test(Dinosaurio d);
}
Run Code Online (Sandbox Code Playgroud)
而这个主要课程:
public class LambdaMain {
public static void main(String[] args) {
List<Dinosaurio> lista = new ArrayList<>();
lista.add(new Dinosaurio("Manolo", true));
lista.add(new Dinosaurio("Pepe", true));
lista.add(new Dinosaurio("Paco", false));
lista.add(new Dinosaurio("Curro", true));
lista.add(new Dinosaurio("Nemo", false));
pintadorDinosaurios(lista, a->a.isEsMamifero());
}
public static void pintadorDinosaurios(List<Dinosaurio> ld, DinosaurioTester dt) {
for(Dinosaurio d : ld) {
if(dt.test(d)) …Run Code Online (Sandbox Code Playgroud) 所以我决定开始使用 CompletableFutureJava8,我无法弄清楚这个片段有什么问题:
public static void main(String...strings) throws Exception {
final Supplier<User> makeUserSupplier = () -> makeUser();
final Supplier<String> uuidSupplier = () -> makeUUID();
final CompletableFuture<User> futureUser = CompletableFuture.supplyAsync(makeUserSupplier);
final CompletableFuture<String> futureUUID = CompletableFuture.supplyAsync(uuidSupplier);
CompletableFuture.allOf(futureUser, futureUUID)
.thenApplyAsync(aVoid -> {
final User user = futureUser.join();
final String uuid = futureUUID.join();
return "received user + " + user + " and uuid is " + uuid ;
})
.handle((ok, e) -> {
System.out.println("ok----" + ok);
System.out.println("e----" + e);
return null;
});
} …Run Code Online (Sandbox Code Playgroud) private static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";
SortedSet<Character> set= new TreeSet<Character>();
for (int i = 0; i < ALPHABET.length(); i++) {
set.add(new Character(ALPHABET.charAt(i)));
}
Run Code Online (Sandbox Code Playgroud)
我想用Java 8方式转换这个for循环.如果使用流可能会更好.输出将是包含Character的"set"对象.
我试图将一个对象数组映射到具有不同类型对象的另一个数组,我曾经在Java 8中使用流来做到这一点,这很简单,实例化一个对象设置其值并返回该对象。我刚切换到Kotlin,实际上有时候做这种操作更令人困惑。我发现的所有示例都非常简单,找不到我想要的东西。
我有这个BalanceMap类:
data class BalanceMap @JsonCreator constructor(
var balType: String,
var value: Any
)
我正在从Web服务获取数据。
val balances: List<AcctBal> = res.getAcctBals();
Run Code Online (Sandbox Code Playgroud)
AcctBal类如下所示
public class AcctBal {
@SerializedName("CurAmt")
@Expose
private CurAmt curAmt;
@SerializedName("Desc")
@Expose
private String desc;
@SerializedName("ExpDt")
@Expose
private LocalDateTime expDt;
}
Run Code Online (Sandbox Code Playgroud)
并尝试将该响应映射到 var balanceList: List<BalanceMap>
balances.map {}
Run Code Online (Sandbox Code Playgroud)
-> var balanceList: List<BalanceMap> = balances.map { t -> fun AcctBal.toBalanceMap() = BalanceMap(
balType = "",
value = ""
)}
我想做这样的事情:
List<ProductDetail> details = acctBal.stream().filter(f -> f.getBalType() != null).map(e -> {
String …Run Code Online (Sandbox Code Playgroud) 我想删除所有列表元素,它们的最后一个拆分字符不是作为某个映射中的键创建的.我使用以下代码:
List<String> myList = Arrays.asList("a.b.c,c.d.e".split(","));
myList.add("a.b.c");
Map myMap = new HashMap();
myMap.put("a","dumy");
myList.removeIf(el->!myMap.containsKey(el.substring(el.lastIndexOf('.') + 1)));
Run Code Online (Sandbox Code Playgroud)
我得到以下错误:Method threw 'java.lang.UnsupportedOperationException' exception.
知道我做错了什么吗?