【问题标题】:Android/Java ArrayList<T> map to ArrayList<String>Android/Java ArrayList<T> 映射到 ArrayList<String>
【发布时间】:2018-01-09 23:16:52
【问题描述】:

我不知道如何将数组从存储类型映射到其他类型。 不幸的是,我不能使用 Java 8。

我有ArrayList&lt;T&gt;,我想映射它,所以我有ArrayList&lt;String&gt; 我怎样才能实现它?

让我们说 T obj有方法obj.toString()

我为此做了谷歌。我能找到的只是如何将ArrayList&lt;String&gt; 转换为String[]Map&lt;K,V&gt; 转换为ArrayList&lt;V&gt;。那不是我要找的:(

感谢您的帮助!

【问题讨论】:

  • ArrayList&lt;String&gt; accumulator = new ArrayList&lt;&gt;(); for(T obj : someList){ accumulator.add(obj.toString()); }
  • someList.stream().map(Object::toString).collect(Collectors.toList()),如果你能够使用流的话。
  • 别忘了处理null对象。

标签: java android arraylist


【解决方案1】:

从某种类型T映射到String的流解决方案如下:

ArrayList<String> resultSet =  
           someList.stream()
                   .map(Object::toString) // or ClassName::toString
                   .collect(Collectors.toCollection(ArrayList::new));

相当于:

ArrayList<String> accumulator = new ArrayList<>();     
for(T obj : someList)
    accumulator.add(obj.toString());

【讨论】:

  • Android 是否支持 Java 8?
  • 谢谢!我正在寻找这样的答案:)
  • @LuiggiMendoza 我不使用安卓所以我不知道。
  • 技术上应该是Object obj
  • @LuiggiMendoza 我认为最近的版本可以。
【解决方案2】:

您可以使用 Guava Lists.transform() 函数。

https://google.github.io/guava/releases/19.0/api/docs/com/google/common/collect/Lists.html#transform(java.util.List%2C%20com.google.common.base.Function)

    Function<T, String> objToString =
            new Function<T, String>() {
                public String apply(T t) { return t != null ? t.toString() : null; }
            };
    List<String> newList = Lists.transform(srcList, objToString);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2012-05-13
    • 2017-08-30
    相关资源
    最近更新 更多