ArrayList<Object> list = new ArrayList<Object>();
list.add(1);
list.add("Java");
list.add(3.14);
System.out.println(list.toString());
Run Code Online (Sandbox Code Playgroud)
我试过了:
ArrayList<String> list2 = (String)list;
Run Code Online (Sandbox Code Playgroud)
但它给了我一个编译错误.
Bal*_*usC 119
由于这实际上不是字符串列表,最简单的方法是循环它并自己将每个项目转换为新的字符串列表:
List<String> strings = list.stream()
.map(object -> Objects.toString(object, null))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
或者当你还没有使用Java 8时:
List<String> strings = new ArrayList<>(list.size());
for (Object object : list) {
strings.add(Objects.toString(object, null));
}
Run Code Online (Sandbox Code Playgroud)
或者当你还没有使用Java 7时:
List<String> strings = new ArrayList<>(list.size());
for (Object object : list) {
strings.add(object != null ? object.toString() : null);
}
Run Code Online (Sandbox Code Playgroud)
请注意,您应该声明接口(java.util.List在本例中),而不是实现.
ath*_*spk 17
这样做并不安全!
想象一下,如果你有:
ArrayList<Object> list = new ArrayList<Object>();
list.add(new Employee("Jonh"));
list.add(new Car("BMW","M3"));
list.add(new Chocolate("Twix"));
Run Code Online (Sandbox Code Playgroud)
将这些对象的列表转换为任何类型都没有意义.
Per*_*erg 13
如果你想以肮脏的方式去做,试试这个.
@SuppressWarnings("unchecked")
public ArrayList<String> convert(ArrayList<Object> a) {
return (ArrayList) a;
}
Run Code Online (Sandbox Code Playgroud)
优点:在这里您可以通过不迭代所有对象来节省时间.
缺点:可能会在你的脚上产生一个洞.
Emi*_*mil 12
使用番石榴:
List<String> stringList=Lists.transform(list,new Function<Object,String>(){
@Override
public String apply(Object arg0) {
if(arg0!=null)
return arg0.toString();
else
return "null";
}
});
Run Code Online (Sandbox Code Playgroud)
您可以使用通配符执行以下操作
ArrayList<String> strList = (ArrayList<String>)(ArrayList<?>)(list);
Run Code Online (Sandbox Code Playgroud)
使用Java 8,您可以:
List<Object> list = ...;
List<String> strList = list.stream()
.map( Object::toString )
.collect( Collectors.toList() );
Run Code Online (Sandbox Code Playgroud)
这是使用番石榴的另一种选择
List<Object> lst ...
List<String> ls = Lists.transform(lst, Functions.toStringFunction());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149311 次 |
| 最近记录: |