标签: iterable

如何在Iterable上执行Stream功能?

在Java 8中,Stream该类没有任何方法来包装Iterable.

相反,我Spliterator从这里Iterable获得了,然后StreamStreamSupport这样获得一个:

boolean parallel = true;

StreamSupport.stream(spliterator(), parallel)
                .filter(Row::isEmpty)
                .collect(Collectors.toList())
                .forEach(this::deleteRow);
Run Code Online (Sandbox Code Playgroud)

是否有产生的一些其他的方式Stream上的操作Iterable,我很想念?

java iterable java-8 java-stream spliterator

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

如何使我的类可迭代,以便我可以使用foreach语法?

我有BookBookList课.BookList是这样的:

public class BookList 
{
    private final List<Book> bList = new ArrayList<Book>();

    public int size() { return bList.size(); }

    public boolean isEmpty() {  ... }

    public boolean contains(Book b) { ...  }

    public boolean add(Book b) { ...  }

    public boolean remove(Book b) {  .. } 

    public void clear() { ... }

    public Object get(int index) { ... }

}
Run Code Online (Sandbox Code Playgroud)

在我的主要课程中,我想在每个循环中打印书籍的标题:

for(Book b : bList)
{
    b.print();
}
Run Code Online (Sandbox Code Playgroud)

Eclipse说:

只能遍历数组或java.lang.Iterable的实例

我怎样才能使这个工作?

java foreach iterable

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

检查iterable的所有值是否为零

是否有一种好的,简洁的/内置的方式来查看迭代中的所有值是否为零?现在我正在使用all()一个小列表理解,但(对我来说)似乎应该有一个更具表现力的方法.我认为这有点等同memcmp()于C.

values = (0, 0, 0, 0, 0)
# Test if all items in values tuple are zero
if all([ v == 0 for v in values ]) :
    print 'indeed they are'
Run Code Online (Sandbox Code Playgroud)

我希望内置函数可以执行以下操作:

def allcmp(iter, value) :
    for item in iter :
        if item != value :
            return False
    return True
Run Code Online (Sandbox Code Playgroud)

这个函数是否存在于python中,我只是盲目的,或者我应该坚持使用我的原始版本?

更新

我不是说这allcmp()是解决方案.这是我认为可能更有意义的一个例子.这不是我建议Python的新内置插件的地方.

在我看来,all()这不是那么有意义.它没有表达"所有"正在检查的内容.你可以假设它all()采用了一个可迭代的,但它没有表达函数正在寻找的东西(一个可迭代的bools测试所有它们True).我要求的是 my allcmp()这样的函数,它有两个参数:一个可迭代的和一个比较值.我在问是否有内置函数可以执行与我编写的类似的操作allcmp(). …

python iterable

26
推荐指数
4
解决办法
5万
查看次数

类型注释中的 collections.Iterable 与 typing.Iterable 和检查 Iterable

我发现,在Python都collections.Iterabletyping.Iterable在类型注释,并检查对象是否是迭代的,即可以使用,无论是isinstance(obj, collections.Iterable)isinstance(obj, typing.Iterable)作品。我的问题是,它们之间有什么区别?在哪些情况下更喜欢哪一个?

python types annotations iterable isinstance

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

检查变量是否可迭代?

有没有办法检查任意变量类型是否可迭代?

那么要检查它是否有索引元素,或者我可以实际循环它的孩子?(例如使用foreach?)

是否可以为此创建通用模板?

我在搜索时找到了其他编程语言的技巧.然而,仍然必须找到如何在C++中做到这一点.

c++ arrays iterable

25
推荐指数
5
解决办法
6740
查看次数

如何将流变成可迭代的?

Stream继承一个iterator()方法来生成一个Iterator.

但我需要一个Iterable而不是一个Iterator.

例如,给定这个字符串:

String input = "this\n" +
        "that\n" +
        "the_other";
Run Code Online (Sandbox Code Playgroud)

...我需要将字符串的这些部分作为 anIterable传递给特定的库。调用input.lines()产生一个Stream. 所以如果我能把它Stream变成Iterable它的一个元素,我会很高兴的。

java iterable java-stream

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

如何检查对象是否可以在Python中迭代?

可能重复:
在Python中,如何确定对象是否可迭代?

如何检查Python对象是否支持迭代,又称迭代对象(参见定义)

理想情况下,我希望函数类似于isiterable(p_object)返回True或False(建模后isinstance(p_object, type)).

python iterable

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

"从迭代中获得"vs"返回iter(可迭代)"

在包装(内部)迭代器时,通常必须将__iter__方法重新路由到底层的iterable.请考虑以下示例:

class FancyNewClass(collections.Iterable):
    def __init__(self):
        self._internal_iterable = [1,2,3,4,5]

    # ...

    # variant A
    def __iter__(self):
        return iter(self._internal_iterable)

    # variant B
    def __iter__(self):
        yield from self._internal_iterable
Run Code Online (Sandbox Code Playgroud)

变体A和B之间是否有任何显着差异?Variant A返回iter()已从内部iterable中查询过的迭代器对象.变量B返回一个生成器对象,该对象返回内部可迭代的值.出于某种原因,是其中一种还是其他的?在collections.abcyield from版本中使用.该return iter()变种是,我已经使用到现在的格局.

python iterable python-3.x yield-from

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

是否有任何Java标准类在没有实现Collection的情况下实现Iterable?

我有一个难题,这让我思考是否有任何标准的java类在Iterable<T>没有实现的情况下实现Collection<T>.我正在实现一个接口,它要求我定义一个接受一个的方法Iterable<T>,但我用来支持这个方法的对象需要一个Collection<T>.

这让我做了一些真正的kludgy感觉代码,在编译时会给出一些未经检查的警告.

public ImmutableMap<Integer, Optional<Site>> loadAll(
        Iterable<? extends Integer> keys
) throws Exception {
    Collection<Integer> _keys;
    if (keys instanceof Collection) {
        _keys = (Collection<Integer>) keys;
    } else {
        _keys = Lists.newArrayList(keys);
    }

    final List<Site> sitesById = siteDBDao.getSitesById(_keys);
    // snip: convert the list to a map
Run Code Online (Sandbox Code Playgroud)

更改生成的集合以使用更通用的Collection<? extends Integer>类型不会消除该行的未经检查的警告.此外,我无法更改方法签名以接受Collection而不是Iterable因为它然后它不再覆盖超级方法,并且在需要时不会被调用.

目前似乎没有被周围的方式该铸造或拷贝的问题:其他问题都得到了一个在别处问这里,似乎深深扎根于Java的泛型和类型擦除系统.但我要问的是,是否有任何可以实现的类Iterable<T>还没有实现Collection<T>?我已经浏览了IterableJavaDoc,当然我希望传递给我的界面的所有内容实际上都是一个集合.我想使用一个在野外预编写的类,因为它似乎更有可能实际作为参数传递,并使单元测试更有价值.

由于我正在写的一些单元测试,我确定我编写的演员或复制位与我在项目中使用它的类型一起工作.但我想编写一个单元测试的一些输入端,一个可迭代但不是一个集合,到目前为止,所有我已经能够拿出正在实施一个虚拟的测试类实现自己.


好奇的是,我正在实现的方法是Guava CacheLoader<K, V>.loadAll(Iterable<? …

java generics collections iterable

21
推荐指数
5
解决办法
1742
查看次数

如何将pandas系列转换为索引和值的元组

我正在寻找一种有效的方法,将一个系列转换为其索引的元组及其值.

s = pd.Series([1, 2, 3], ['a', 'b', 'c'])
Run Code Online (Sandbox Code Playgroud)

我想要一个数组,列表,系列,一些可迭代:

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

python iterable series pandas

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