在 Java 中将 List<Object> 转换为 String[]
Posted
技术标签:
【中文标题】在 Java 中将 List<Object> 转换为 String[]【英文标题】:Convert List<Object> to String[] in Java 【发布时间】:2013-01-24 06:14:14 【问题描述】:我需要从List<Object>
转换为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<Object> lst = new ArrayList<Object>(); lst.add(1);
这个测试用例我得到 ArrayStoreException。【参考方案3】:
Java 8 可以选择使用以下流:
List<Object> lst = new ArrayList<>();
String[] strings = lst.stream().toArray(String[]::new);
【讨论】:
【参考方案4】:如果我们非常确定List<Object>
将包含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;;;的几种方法