标签: flatmap

Swift:flatMap to Dictionary

我试图解析以下JSON:

{ 
  "String For Key 1": [
    "Some String A",
    "Some String B",
    "Some String C",
  ],
  "String For Key 2": [
    "Some String D",
    "Some String E",
    "Some String F"
  ],
  "String For Key 3": [
    "Some String G",
    "Some String H",
    "Some String I",
  ],
  "String For Key 4": [
    "Some String J",
    "Some String K",
    "Some String L"
  ],
  "String For Key 5": [
    "Some String M",
    "Some String N",
    "Some String O"
  ],
  "String For Key …
Run Code Online (Sandbox Code Playgroud)

generics flatmap swift ios9 swift2

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

如果返回的Optional具有值,则返回可选,否则调用另一个函数

我有两个方法func1和func2返回Optional.如果从func1返回的Optional具有值,则返回可选,否则调用func2并返回其Optional.一种方法是使用if-else.

Optional<MyObject> opt1 = func1();
if (opt1.isPresent()) {
    return opt1;
}
return func2();
Run Code Online (Sandbox Code Playgroud)

但是,我希望使用Java 8 Optional来实现它并避免使用它if-else.

就像是:

return Optional.of(obj1) 
        .flatMap_returnOptionalIfvaluePresent(func1)
        .orElseReturnOptionalFromThis(func2)
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议一个好方法吗?

java optional java-8 flatmap

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

使用Java 8 Stream API展平地图并关联值

假设我有一组字符串到整数值的映射:
Map<HashSet<String>, Integer> map = new HashMap<>().

例如,mapis(我们假设没有重复的字符串):

{x,y}   ->  2
{z}     ->  3
{u,v,w} ->  4
Run Code Online (Sandbox Code Playgroud)

如何使用Java 8 Stream API获取如下another_map类型:Map<String, Integer>

x -> 2
y -> 2
z -> 3
u -> 4
v -> 4
w -> 4
Run Code Online (Sandbox Code Playgroud)

它看起来像一个flatMap操作,但是如何将Integer值与每个String键相关联?

lambda functional-programming java-8 java-stream flatmap

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

flatMap与map的效率之后是Spark中的reduce

我有一个包含多行文本的文本文件sherlock.txt.我使用以下命令将其加载到spark-shell中:

val textFile = sc.textFile("sherlock.txt")
Run Code Online (Sandbox Code Playgroud)

我的目的是计算文件中的单词数.我遇到了两种替代方法来完成这项工作.

首先使用flatMap:

textFile.flatMap(line => line.split(" ")).count()
Run Code Online (Sandbox Code Playgroud)

第二个使用map后跟reduce:

textFile.map(line => line.split(" ").size).reduce((a, b) => a + b)
Run Code Online (Sandbox Code Playgroud)

两者都正确地产生相同的结果.我想知道上述两种替代实现的时间和空间复杂性的差异,如果确实存在的话?

scala解释器是否将两者都转换为最有效的形式?

scala mapreduce flatmap apache-spark rdd

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

Java flatMap - 有什么区别stream.of()和collection.stream()

我试图理解flatMap:flatMap(x->stream.of(x) )不平坦流和flatMap(x->x.stream())工作,并给出所需的结果.有人可以解释两者之间的区别吗?

import java.util.*;
import java.util.stream.*;

class TestFlatMap{

    public static void main(String args[]){
        List<String> l1 = Arrays.asList("a","b");
        List<String> l2 = Arrays.asList("c","d");

        Stream.of(l1, l2).flatMap((x)->Stream.of(x)).forEach((x)->System.out.println(x));

        Stream.of(l1, l2).flatMap((x)->x.stream()).forEach((x)->System.out.println(x));
    }

}
Run Code Online (Sandbox Code Playgroud)

输出:

[a, b]
[c, d]
a
b
c
d
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream flatmap

4
推荐指数
2
解决办法
334
查看次数

Scala:带元组的 flatMap

为什么以下语句对 有效.map()但对无效.flatMap()

 val tupled = input.map(x => (x*2, x*3))

 //Compilation error: cannot resolve reference flatMap with such signature
 val tupled = input.flatMap(x => (x*2, x*3))
Run Code Online (Sandbox Code Playgroud)

不过这个说法没有问题:

val tupled = input.flatMap(x => List(x*2, x*3))
Run Code Online (Sandbox Code Playgroud)

scala flatmap

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

Swift过滤基于另一个Bool数组的其他数组

我有一个Bools数组,想要编辑一个Scores数组和一个Dates数组,其值为False.我无法理解.我想到了获取false的元素并使用该数组从score数组中删除这些元素,但我可以想象有一种直接的方法.

let hbiCompleteArray = [true, true, true, true, false, true, true, false, false]

let hbiScoreArray = [12, 12, 12, 12, 3, 13, 13, 2, 2]
Run Code Online (Sandbox Code Playgroud)

我想要一个完整的HbiScores数组= [12,12,12,12,13,13]

arrays filter flatmap swift

4
推荐指数
2
解决办法
1217
查看次数

用Java 8 flatmap替换嵌套循环

我正在尝试使用flatmap与Stream API进行嵌套循环,但我似乎无法弄明白.作为示例,我想重新创建以下循环:

List<String> xs = Arrays.asList(new String[]{ "one","two", "three"});
List<String> ys = Arrays.asList(new String[]{"four", "five"});

System.out.println("*** Nested Loop ***");
for (String x : xs)
    for (String y : ys)
        System.out.println(x + " + " + y);
Run Code Online (Sandbox Code Playgroud)

我可以这样做,但这看起来很难看:

System.out.println("*** Nested Stream ***");
xs.stream().forEach(x ->
    ys.stream().forEach(y -> System.out.println(x + " + " + y))
);
Run Code Online (Sandbox Code Playgroud)

Flatmap看起来很有前景,但是如何在外部循环中访问变量?

System.out.println("*** Flatmap *** ");
xs.stream().flatMap(x -> ys.stream()).forEach(y -> System.out.println("? + " + y));
Run Code Online (Sandbox Code Playgroud)

输出:

*** Nested Loop ***
one + four
one + five
two + …
Run Code Online (Sandbox Code Playgroud)

java loops java-8 java-stream flatmap

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

如何有条件地使用'flatmap'运算符?(Angular 2/rxjs)

我想要实现的是有条件地运行一系列可观察量.

return observable.map(response => response)
       .flatmap(response1 => observable1(response1))
       .flatmap(response2 => observable2(response2))
       .flatmap(response3 => observable3(response3))
Run Code Online (Sandbox Code Playgroud)

我需要检查response1并在需要时调用剩余的observable,否则我需要返回response1并中断执行,依此类推.

我已经完成了以下SO问题,但他们似乎没有回答我的问题

有条件地选择RxJS中的observable

RXJS如果具有可观察的条件

处理RxJs flatMap流中的错误并继续处理

我是rxjs的新手,如果这个问题看起来太蹩脚,请原谅我.

任何帮助将不胜感激.

谢谢

rxjs ecmascript-6 flatmap rxjs5 angular

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

Java 8 stream min未返回预期值

我希望从java中的地图列表中获取最小值.我使用flatmap,stream和min的组合来做到这一点并没有得到预期的结果.这是代码公共类TestMin {

public  static class TestHolder{
    public  static Map<String,Integer> getValues(){
        Map<String,Integer> map = new HashMap<>();
        map.put("a",1);
        map.put("b",3);
        map.put("c",2);

        return map;

    }
}

public static void main(String[] args) {
    List<Map<String, Integer>> l = new ArrayList<>();
    l.add(TestHolder.getValues());
    l.add(TestHolder.getValues());
    l.add(TestHolder.getValues());

    // Getting min
    int min = l.stream().map((m)->m.values()).flatMap((v)->v.stream()).min(Integer::min).get();
    System.out.println(min);
    }

}
Run Code Online (Sandbox Code Playgroud)

输出为:2

当然,我期望的输出是1.尝试一些调试表明它提供的输出值对应于"c".即如果地图看起来像

[a->2 , b->3, c->1] 
Run Code Online (Sandbox Code Playgroud)

然后我得到的输出是1.问题是为什么它不是按值排序而是按键排序并为我提供意外的输出.

java functional-programming min java-8 flatmap

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