在 Java 中将 List<Object> 转换为 String[]

Posted

技术标签:

【中文标题】在 Java 中将 List<Object> 转换为 String[]【英文标题】:Convert List<Object> to String[] in Java 【发布时间】:2013-01-24 06:14:14 【问题描述】:

我需要从List&lt;Object&gt; 转换为String[]

我做了:

List<Object> lst ...
String arr = lst.toString();

但我得到了这个字符串:

["...", "...", "..."]

只是一个字符串,但我需要String[]

非常感谢。

【问题讨论】:

如何将随机的Object转成String? toString (在大多数类中)纯粹用于诊断消息,而不是“生产”。 我想转换 String[] 中的所有列表而不对其进行迭代。 你看过 List 的规范了吗? (我猜不是,否则你会注意到 toArray。) Java 8 : ***.com/a/31002358/1216775 【参考方案1】:

您必须遍历列表并填写您的String[]

String[] array = new String[lst.size()];
int index = 0;
for (Object value : lst) 
  array[index] = (String) value;
  index++;

如果列表是String 值,List 那么这就像调用lst.toArray(new String[0]) 一样简单;

【讨论】:

array[index] = (String) value 更改为 array[index] = String.valueOf( value )。如果列表包含任何内容,但字符串除外,那么答案将崩溃。也许这就是 OP 想要的。【参考方案2】:

您可以使用 toArray() 转换为对象数组,然后使用this method 将对象数组转换为字符串数组:

Object[] objectArray = lst.toArray();
String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);

【讨论】:

objectArray仍然可以用作String[]时,为什么要额外的数组复制? 查看链接问题的底部 - 将 objectArray 转换为 String[] 会导致 ClassCastException。这个答案解释得更好:***.com/a/1018774/1063716 是的,如果列表包含字符串以外的对象。但即使在您的代码中也会发生这种情况。 List&lt;Object&gt; lst = new ArrayList&lt;Object&gt;(); lst.add(1); 这个测试用例我得到 ArrayStoreException。【参考方案3】:

Java 8 可以选择使用以下流:

List<Object> lst = new ArrayList<>();
String[] strings = lst.stream().toArray(String[]::new);

【讨论】:

【参考方案4】:

如果我们非常确定List&lt;Object&gt; 将包含String 的集合,那么不妨试试这个。

List<Object> lst = new ArrayList<Object>();
lst.add("sample");
lst.add("simple");
String[] arr = lst.toArray(new String[] );
System.out.println(Arrays.deepToString(arr));

【讨论】:

【参考方案5】:

这里有很多有用的概念:

List<Object> list = new ArrayList<Object>(Arrays.asList(new String[]"Java","is","cool"));
String[] a = new String[list.size()];
list.toArray(a);

打印字符串数组的提示:

System.out.println(Arrays.toString(a));

【讨论】:

【参考方案6】:

使用Guava

List<Object> lst ...    
List<String> ls = Lists.transform(lst, Functions.toStringFunction());

【讨论】:

【参考方案7】:

在 Kotlin 中有一个简单的方法

var lst: List<Object> = ...
    
listOFStrings: ArrayList<String> = (lst!!.map  it.name )

【讨论】:

以上是关于在 Java 中将 List<Object> 转换为 String[]的主要内容,如果未能解决你的问题,请参考以下文章

在 WinForms 中将 Listbox 绑定到 List<object>

如何在颤动中将 Map<String, List<object>> 保存在 sharedPreferences 中?

如何在 C# 中将 List<object> 转换为 Hashtable?

Java 将List<Object; 转换成 Map<String, Map<String,List<Object;;;的几种方法

java 怎么将List<List<Object>>类型转换成json类型,怎么读取json类型

在 Java 中将 JSON 转换为 List<List<String>>