在ArrayList中存储不同的类型

时间:2015-07-08 18:46:41

标签: java arraylist processing

我想将元素存储在列表中,每个元素都有4个参数 我正在尝试创建一个数组列表,为每个元素存储4个不同类型的参数:

  

iD:int
  x位置:浮动
  y位置:浮动
  name:string

我用:

ArrayList<String> activList ;

但是当我使用时:

 activList.add(2, 4.5, 8.9,"Name");

我收到错误:

“ArrayList类型中的方法add(int,Object)不适用于参数(in,float,float)”

我不知道如何能够为ArrayList添加不同的类型,有没有办法做到这一点?

感谢您的帮助

6 个答案:

答案 0 :(得分:9)

您可能需要创建自己的类来表示这4个参数。然后,您可以将该对象的实例插入ArrayList:

public class MyParameters {
    private int id;
    private float x;
    private float y;
    private String name;

    public MyParameters(int id, float x, float y, String name) {
        // ...
    }

    // + getters, setters
}

// ...

List<MyParameters> myParameters = new ArrayList<>();
myParameters.add(new MyParameters(2, 4.5, 8.9, "Name"));

答案 1 :(得分:3)

您可以将ArrayList定义为<Object>类型并将其中的任何内容放入其中,但这不是一个好习惯。使用您的四个字段,getter和setter创建一个简单的类,并使用该类型的ArrayList。那会更清楚!

答案 2 :(得分:0)

您的使用不正确; add不会添加多个项目。你要找的是:

activList.add(2);
activList.add(4.5);
activList.add(8.9);
activList.add("Name");

当然,这仍然不起作用,因为您的ArrayList拥有String个对象。如果你想要的只是保存各种对象的字符串表示,你可以使用Java中toString的许多实现来实现它:

activList.add(Integer.toString(2));
activList.add(Double.toString(4.5));
activList.add(Double.toString(8.9));
activList.add("Name");

但如果您的目标是将名称与值相关联,那么您应该只使用一个类:

class YourClass {
  private int id;
  private float xPosition;
  private float yPosition;
  private String name;

  // constructor, getters, setters, etc.
}

答案 3 :(得分:0)

你可以这样做:

List<Object> test = new ArrayList<>();
test.add(10);
test.add("Test");
test.add(1.0);
test.add('c')

根据您的需要,创建一个名为Storage

的类是件好事
class Storage{
   int id;
   String name;
   float x;
   float y;
   public Storage(int id, String name, float x, float y){
     this.id = id;
     this.name = name;
     this.x = x;
     this.y = y;
   }
}

存储的创建列表类型

答案 4 :(得分:0)

创建一个封装&#34;元素&#34;

行为的类
public class YourClass
{

    public YourClass() { }

    int id;
    float x;
    float y;
    String name;

}

然后你可以像这样定义一个列表:

ArrayList<YourClass> activList = new ArrayList<YourClass>();

YourClass e = new YourClass();
e.id = 2;
e.x = 4.5;
e.y = 8.9;
e.name = "Name";

activList.add(e);

最好将字段定义为私有,并通过getter / setter访问它们。

答案 5 :(得分:0)

我不确定这是推荐还是缺点,但您可以在没有任何泛型的情况下初始化ArrayList。 然后,您可以将任何类型的对象添加到ArrayList

ArrayList al = new ArrayList();
al.add(5);
al.add("Naruto Uzumaki");
al.add(25.24);
System.out.println(al)

这会给你输出

[5, Naruto Uzumaki, 25.24]