相关疑难解决方法(0)

632
推荐指数
16
解决办法
31万
查看次数

如何使用流来查找两个列表或数组乘法中的元素对

我有两个数字列表,我想找到所有可能的数字对.例如,给定列表[1,2,3]和[3,4],结果应该是[(1,3),(1,4),(2,3),(2,4),(3) ,3),(3,4)].

我知道我可以使用for循环来做到这一点,但有没有更简洁的方法来使用Java 8流?

我试过以下但是我错过了一些东西,因为我得到了List<Stream<int[]>>而不是List<int[]>.

public static void main(String[] args) {
    List<Integer> list1 = Arrays.asList(1, 2, 3);
    List<Integer> list2 = Arrays.asList(3, 4);
    List<int[]> pairs = list1.stream().map(i -> list2.stream().map(j -> new int[] { i, j }))
            .collect(Collectors.toList());
    pairs.forEach(i -> {
            System.out.println("{" + i[0]+ "," + i[1]+ "}");
    });
}
Run Code Online (Sandbox Code Playgroud)

java matrix-multiplication java-8 java-stream

20
推荐指数
3
解决办法
3641
查看次数

如何使用java 8将对象的多个属性转换为List <String>

我想知道是否有办法将一个对象的多个属性组合成一个String列表.在我的案例中,我有一个名为"debitCardVO"的对象,我希望它从对象转换为List

这是我的代码片段:

for (DebitCardVO debitCardVO : debitCardVOList) {
    List<String> debitCardList   = debitCardVOList.stream()
            .map(DebitCardVO::getCardBranchCode,DebitCardVO::getAccountNo)
            .collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)

java string list java-8 java-stream

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

嵌套集合lambda迭代

假设我有一个包含集合的对象,所述集合上的每个元素都包含一个集合,每个集合都包含一个集合.

我想迭代最深的对象并将相同的代码应用于它.

必要的方法是微不足道的,但有没有办法让这一切变得简单?

以下是代码今天的样子:

My object o;
SecretType computedThingy = 78;
for (FirstLevelOfCollection coll : o.getList()) {
  for (SecondLevelOfCollection colColl : coll.getSet()) {
    for (MyCoolTinyObjects mcto : colColl.getFoo()) {
      mcto.setSecretValue(computedThingy);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以看到如何从最深的循环中创建一个lambda:

colColl.getFoo().stream().forEach(x -> x.setSecretValue(computedThingy)
Run Code Online (Sandbox Code Playgroud)

但我可以做更多吗?

java lambda java-8

5
推荐指数
2
解决办法
1084
查看次数

Java 8:扁平化 Stream&lt;Stream&gt;

我想在指定年份之间的一年中在 Quarter 上做一个笛卡尔积

Year(2105, 2016) 应该返回 Quarter(2015, Q1), Quarter(2015, Q2)... Quarter(2016, Q4)

代表季度的枚举将是

public enum Quarters {
    Q1, Q2, Q3, Q4
}
Run Code Online (Sandbox Code Playgroud)

我试图想出的代码卡在下面

IntStream.rangeClosed(this.getYear(), to.getYear())
    .boxed()
    .map(i -> Arrays
        .stream(Quarters.values())
        .map(q -> new Quarter(i, q))
    );
Run Code Online (Sandbox Code Playgroud)

上面的代码返回Stream<Stream<Quarter>>,我需要扁平化为Stream<Quarter>任何帮助表示赞赏。

java java-8 java-stream

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

如何使用 Stream.flatMap()?

我有Stream<SortedSet<String>>,而且我只想拥有一个Stream<String>. 我尝试使用flatMap()但它没有用,因为它不能平面 Sortedset 流。

String productName = "p1";
Set<Product> products = new HashSet<>();
products.add(new Product(productName));
Stream<SortedSet<String>> sortedSetStream = products.stream().map(p -> Util.getProductNames(p) );
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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