如何在列表中存储double和Integer?

时间:2013-11-03 21:31:48

标签: java

我试图在列表中存储不同类型,例如double和integer。有人可以给我一个如何做的例子吗?

由于

4 个答案:

答案 0 :(得分:6)

您可以存储List<Number>并存储DoubleInteger

然而,这可能是不必要的复杂,因为每个int都可以存储为双倍而不会丢失。

这意味着你可以使用List<Double>简单但效率不如TDoubleArrayList,它将值保存为原语可以节省相当多的内存和GC,如果你有很多这样的话。

List<Double> list = new ArrayList<>();
list.add(1.234); // a double
list.add(1.0);   // a double
list.add((double) 1); // an int.

for(Double d: list)
    System.out.println(d);

使用TDoubleArrayList

TDoubleArrayList list = new TDoubleArrayList();
list.add(1.234); // a double
list.add(1.0);   // a double
list.add(1); // an int.

for(int i = 0; i < list.size(); i++)
   System.out.println(list.get(i));

答案 1 :(得分:2)

List<Number> list = new ArrayList<Number>();
list.add(new Integer());
list.add(new Double());

if(list.get(0) instanceof Integer){
  Integer i = (Integer)list.get(0);
} else {
  Double d = (Double)list.get(0);
}

答案 2 :(得分:0)

例如,您可以使用Number类。更好的选择是将Integer转换为Double值。

答案 3 :(得分:0)

试试这段代码:

List<Number> list = new ArrayList<Number>();
list.add(new Double(0.01));
list.add(new Integer(1));