标签: java-8

编写Java 8流的单元测试

我有一个列表,我正在流式传输此列表以获取一些过滤数据,如下所示:

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()

java junit mockito java-8

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

嵌套级别的Java 8流优化

我们如何使用优化此流来收集集合的嵌套级别和根级别.

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)

java java-8 java-stream

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

Java 8:Stream,NIO和Lambda

我有一个包含多行的文件.每行都可以转换为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.有什么办法吗?

java lambda nio java-8 java-stream

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

使用流在HashMap中收集事件

我有一个练习要解决.我有一个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)

我该怎么把它放在一起?

java hashmap java-8 java-stream method-reference

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

从scala中的String计算日期

您好我想使用LocalDateTime JAVA API将这些类型的字符串转换为日期.下面是输入字符串:"1672017",我想根据2017年的数字为167的日期转换为相应的日期.

请知道如何做到这一点

java datetime scala date java-8

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

Java中功能接口的强大之处在哪里?

我正在阅读有关函数式编程的基础知识.无论如何,我做了一些例子试图理解这个概念并正确使用它.

我没有掌握这种函数式编程的强大功能.它只是在编写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)

java lambda functional-programming java-8

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

UUID.randomUUID()的CompletableFuture问题

所以我决定开始使用 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)

uuid asynchronous java-8 completable-future

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

使用Stream java 8将String转换为set <Character>

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 collections java-8 java-stream

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

Kotlin如何在Kotlin中使用Java Streams .map()映射不同的对象响应

我试图将一个对象数组映射到具有不同类型对象的另一个数组,我曾经在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)

java-8 kotlin java-stream

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

java 8:如果在map键中找不到它,则从列表中删除元素

我想删除所有列表元素,它们的最后一个拆分字符不是作为某个映射中的键创建的.我使用以下代码:

   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.

知道我做错了什么吗?

java list hashmap java-8

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