如何将Collection <number>转换为Collection <integer> safety?</integer> </number>

时间:2013-12-24 09:16:10

标签: java collections numbers integer

我有Collection<Number>但我需要Collection<Integer>

如何将其转换为安全?

更常见的问题:

如何将Collection<Parent>转换为Collection<Child>

5 个答案:

答案 0 :(得分:3)

你可以试试这个

    Collection<Number> numbers = ...
    Collection<Integer> integers = numbers.getClass().newInstance();
    for(Number n : numbers) {
        integers.add(n == null ? null : n.intValue());
    }

答案 1 :(得分:2)

你可以用这种转换方法 -

这样做
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;
}

答案 2 :(得分:2)

Guava示例:

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();
  }
});

注意:Guava是一个外部库,您需要将其导入。

答案 3 :(得分:1)

您可以使用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 );
       }

  }

答案 4 :(得分:0)

对于每个循环来迭代具有任何数字数据类型的集合,然后单独插入将这些数字数据类型转换为整数到另一个集合。

List<Integer> i =  new ArrayList<Integer>();
for (Number n : in){
i.add(n.intValue()); 
}}