标签: flatten

在番石榴中展平Iterable <Iterable <T >>

flatten在番石榴中是否有一种方法 - 或者将一种方法转换Iterable<Iterable<T>>为一种方法Iterable<T>

我有一个Multimap<K, V>[sourceMultimap],我想返回键匹配某个谓词[keyPredicate]的所有值.所以目前我有:

Iterable<Collection<V>> vals = Maps.filterKeys(sourceMultimap.asMap(), keyPredicate).values();

Collection<V> retColl = ...;
for (Collection<V> vs : vals) retColl.addAll(vs);
return retColl;
Run Code Online (Sandbox Code Playgroud)

我查看了番石榴文档,但没有跳出来.我只是检查我没有错过任何东西.否则,我会将我的三行提取为一个简短的扁平泛型方法,并保持原样.

java collections flatten guava

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

取消选择选项

说我有一个val s: Option[Option[String]].因此它可以具有以下值:

Some(Some("foo")) Some(None) None

我想减少它,以便第一个成为Some("foo")另外两个成为None.很明显,有很多方法可以实现这一目标,但我正在寻找一种简单的,可能是内置的,不足一线的.

monads scala join flatten option

40
推荐指数
3
解决办法
9002
查看次数

是否可以展平MongoDB结果查询?

我在MongoDB集合中有一个深层嵌套的集合.

当我运行以下查询时:

db.countries.findOne({},{'data.country.neighbor.name':1,'_id':0})
Run Code Online (Sandbox Code Playgroud)

我最终得到了这个嵌套的结果:

{"data" : {
  "country" : [
    {
      "neighbor" : [
        {
          "name" : "Austria"
        },
        {
          "name" : "Switzerland"
        }
      ]
    },
    {
      "neighbor" : {
        "name" : "Malaysia"
      }
    },
    {
      "neighbor" : [
        {
          "name" : "Costa Rica"
        },
        {
          "name" : "Colombia"
        }
      ]
    }
  ]
}}
Run Code Online (Sandbox Code Playgroud)

现在,这就是我想要的:

['Austria', 'Switzerland', 'Malaysia', 'Costa Rica', 'Colombia']
Run Code Online (Sandbox Code Playgroud)

或这个:

{'name':['Austria', 'Switzerland', 'Malaysia', 'Costa Rica', 'Colombia']}
Run Code Online (Sandbox Code Playgroud)

或其他类似的东西......这可能吗?

flatten mongodb mongodb-query

39
推荐指数
2
解决办法
3万
查看次数

Scala - 将列表列表转换为单个列表:列出[列表[A]]到列表[A]

在scala(2.9)中转换列表列表的最佳方法是什么?

我有一个清单:

List[List[A]]
Run Code Online (Sandbox Code Playgroud)

我要转换成

List[A]
Run Code Online (Sandbox Code Playgroud)

如何以递归方式实现?或者还有其他更好的方法吗?

recursion scala list flatten

36
推荐指数
4
解决办法
3万
查看次数

如何压缩Scala中的期货清单

我想拿这个val:

val f = List(Future(1), Future(2), Future(3))
Run Code Online (Sandbox Code Playgroud)

对它进行一些操作(我当时想要弄平)

f.flatten
Run Code Online (Sandbox Code Playgroud)

得到这个结果

scala> f.flatten = List(1,2,3)
Run Code Online (Sandbox Code Playgroud)

如果这里的展平方法不合适,那很好.只要我得到结果.

谢谢!

scala list flatten

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

将具有对象的数组展平为1个对象

给定输入:

[{ a: 1 }, { b: 2 }, { c: 3 }]
Run Code Online (Sandbox Code Playgroud)

如何退货:

{ a: 1, b: 2, c: 3 }
Run Code Online (Sandbox Code Playgroud)

对于数组而言,它不是 lodash 的问题,但在这里我们有对象数组.

javascript flatten lodash

29
推荐指数
2
解决办法
2万
查看次数

如何序列化二叉树

我今天去接受采访,要求我序列化一棵二叉树.我实现了一种基于数组的方法,其中节点i的子节点(在水平顺序遍历中编号)处于左子节点的2*i索引和右子节点的2*i + 1.面试官似乎或多或少都很高兴,但我想知道序列化究竟意味着什么?它是否专门用于展平树以写入磁盘,或者序列化树还包括将树转换为链表,比方说.另外,我们如何将树扁平化为(双重)链表,然后重构它?您可以从链表重新创建树的确切结构吗?

tree serialization binary-tree flatten binary-search-tree

28
推荐指数
3
解决办法
4万
查看次数

如何在1D阵列中"展平"或"索引"3D阵列?

我试图在我的游戏中将3D阵列压平为1D阵列中的"块"系统.这是一个3D块游戏,基本上我希望块系统几乎与Minecraft的系统相同(但是,这不是Minecraft克隆的任何措施).在我以前的2D游戏中,我使用以下算法访问了扁平化数组:

Tiles[x + y * WIDTH]
Run Code Online (Sandbox Code Playgroud)

然而,这显然不适用于3D,因为它缺少Z轴.我不知道如何在3D空间中实现这种算法.宽度,高度和深度都是常量(宽度和高度一样大).

x + y*WIDTH + Z*DEPTH吗?我的数学非常糟糕,我只是开始进行3D编程,所以我很丢失:|

PS.这样做的原因是我循环并从索引中获取相当多的东西.我知道1D阵列比多维阵列更快(我记得的原因是:P).即使这可能没有必要,我希望尽可能好的表现:)

.net c# arrays 3d flatten

28
推荐指数
7
解决办法
5万
查看次数

如何在javascript中进行"平推"?

我想将源数组的所有单个元素推送到目标数组,

target.push(source);
Run Code Online (Sandbox Code Playgroud)

将源的引用放在目标列表上.

而不是我想做的事:

for (i = 0; i < source.length; i++) {
    target.push(source[i]);
}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法在javascript中更优雅,没有明确编码重复循环?

虽然我在这,但正确的用语是什么?我不认为"平推"是正确的.谷歌搜索没有产生任何结果,因为源和目标都是数组.

javascript arrays push flatten

25
推荐指数
4
解决办法
8939
查看次数

拼合多维数组连接键

可能重复:
PHP将嵌套数组转换为单个数组,同时连接键?
递归获取数组的键并创建下划线分隔字符串

请在回答之前阅读整个问题.

我有这个多维数组:

$data = array(
    'user' => array(
        'email'   => 'user@example.com',
        'name'    => 'Super User',
        'address' => array(
            'billing' => 'Street 1',
            'delivery' => 'Street 2'
        )
    ),
    'post' => 'Hello, World!'
);
Run Code Online (Sandbox Code Playgroud)

我希望它变平,变成:

$data = array(
    'user.email' => 'user@example.com',
    'user.name'  => 'Super User',
    'user.address.billing'  => 'Street 1',
    'user.address.delivery' => 'Street 2',
    'post'       => 'Hello, World!'
);
Run Code Online (Sandbox Code Playgroud)

重要:

  • 钥匙对我来说非常重要.我希望它们连接起来,用句点分隔.

  • 它应该适用于任何级别的嵌套.

谢谢!

php arrays flatten multidimensional-array

24
推荐指数
3
解决办法
2万
查看次数