我想将元素存储在列表中,每个元素都有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添加不同的类型,有没有办法做到这一点?
感谢您的帮助
答案 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]