我有Collection<Number>
,但我需要Collection<Integer>
如何将其转换为安全?
还有更常见的问题:
如何将Collection<Parent>
转换为Collection<Child>
你可以
试试这个
Collection<Number> numbers = ...
Collection<Integer> integers = numbers.getClass().newInstance();
for(Number n : numbers) {
integers.add(n == null ? null : n.intValue());
}
番石榴的例子:
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
Collection<Number> collection = ...
return Collections2.transform(collection, new Function<Number, Integer>() {
@Nullable
@Override
public Integer apply(@Nullable Number input) {
if(input == null) {
return null;
}
return input.intValue();
}
});
注意:番石榴是一个外部库,您需要导入它。
你可以
用这样的转换方法做到这一点 -
public static Collection<Integer> convert(Collection<Number> in) {
List<Integer> al = new ArrayList<Integer>();
for (Number n : in) {
if (n != null) {
al.add(n.intValue());
}
}
return al;
}
您可以使用
instanceof
运算符。试试这个
Iterator<Number> itr = collection.iterator();
while(itr.hasNext())
{
Number number = itr.next();
if(number instanceof Integer)
{
Integer value = (Integer)number ;
System.out.print("Integer is "+value );
}
}
对于每个循环,以迭代具有任何数值数据类型的集合,然后单独插入将这些数值数据类型转换为整数 1 到另一个集合。
List<Integer> i = new ArrayList<Integer>();
for (Number n : in){
i.add(n.intValue());
}}