在Guava中是否有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; 我已经浏览了番石榴文件,但没有跳出来。 我只是检查我没有错过任何东西。 否则,我将把我的三行提取到一个简短的扁平通用方法中,并保持原样。
有没有一种快速的方法来“扁平化”或压扁一些数组中的第一个维度? 例如,给定一个大小(50,100,25)数组(50,100,25) ,所得到的尺寸将是(5000,25)
我只在Prolog工作了几天。 我了解一些事情,但这真让我困惑。 我想写一个函数,它需要一个列表并将其弄平。 ?- flatten([a,[b,c],[[d],[],[e]]],Xs). Xs = [a,b,c,d,e]. % expected result 该函数取出列表的内部结构。 这是我迄今为止: flatten2([],[]). flatten2([Atom|ListTail],[Atom|RetList]) :- atom(Atom), flatten2(ListTail,RetList). flatten2([List|ListTail],RetList) :- flatten2(List,RetList). 现在,当我打电话时, ?- flatten2([a,[b,c],[[d],[],[e]]], R). R = [a,b,c,d,e]. % works as expected! 但是当我打电话来查看我input的列表是否已经变平时,返回false而不是true : ?- flatten2([a,[b,c],[[d],[],[e]]], [a,b,c,d,e]). false. % BAD result! 它为什么一方面工作,而另一方面呢? 我觉得我错过了很简单的事情。