Canonical toList在java中?

rip*_*234 3 java collections

在任何标准库中都有这样的东西(例如apache-commons,guava)?

public static <T> List<T> toList(Iterable<T> iterable) {
    if (iterable instanceof List)
        return (List<T>)iterable;

    if (iterable instanceof Collection)
        return new ArrayList<T>((Collection<T>)iterable);

    List<T> result = new ArrayList<T>();
    for (T item : iterable)
        result.add(item);

    return result;
}
Run Code Online (Sandbox Code Playgroud)

Rol*_*lig 9

我不这么认为,因为你的实现做了两件完全不同的事情:

  • 如果参数是列表,则返回它.因此,返回的列表将是参数的"实时视图".每个列表的更改在另一个列表中可见.
  • 如果参数不是列表,则返回它的副本.返回的列表将独立于参数.

这两件事情是如此不同,以至于没有一个理智的通用库会将它们放在一个方法中.

  • +几乎*完全*我们不在Guava中包含这个的原因. (2认同)