在 ArrayList 中存储不同的类型
Store different types in ArrayList
我想将元素存储在一个列表中,每个元素有 4 个参数
我正在尝试创建一个数组列表,为每个元素存储 4 个不同类型的参数:
iD: int
x position : float
y position : float
name : string
我使用:
ArrayList<String> activList ;
但是当我使用时:
activList.add(2, 4.5, 8.9,"Name");
我收到错误:
" ArrayList 类型中的方法 add(int,Object) 不适用于参数 (in, float, float)"
我不知道如何将不同的类型添加到 ArrayList,有办法吗?
感谢您的帮助
您的用法不正确; 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:
class YourClass {
private int id;
private float xPosition;
private float yPosition;
private String name;
// constructor, getters, setters, etc.
}
您可以将 ArrayList 定义为 <Object>
类型并在其中放入任何内容,但这不是好的做法。使用您的四个字段、getter 和 setter 创建一个简单的 class,并使用该类型的 ArrayList。这样就清楚多了!
你可以这样做:
List<Object> test = new ArrayList<>();
test.add(10);
test.add("Test");
test.add(1.0);
test.add('c')
根据您的需要,最好创建一个 class,例如 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;
}
}
一个创建列表类型的存储
您可能需要创建自己的 class 来表示这 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"));
创建一个封装 "element"
行为的 class
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);
最好将字段定义为私有,然后通过getters/setters访问它们。
我不确定这是否值得推荐或有任何缺点,但您可以在不使用任何泛型的情况下初始化 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]
我想将元素存储在一个列表中,每个元素有 4 个参数 我正在尝试创建一个数组列表,为每个元素存储 4 个不同类型的参数:
iD: int
x position : float
y position : float
name : string
我使用:
ArrayList<String> activList ;
但是当我使用时:
activList.add(2, 4.5, 8.9,"Name");
我收到错误:
" ArrayList 类型中的方法 add(int,Object) 不适用于参数 (in, float, float)"
我不知道如何将不同的类型添加到 ArrayList,有办法吗?
感谢您的帮助
您的用法不正确; 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:
class YourClass {
private int id;
private float xPosition;
private float yPosition;
private String name;
// constructor, getters, setters, etc.
}
您可以将 ArrayList 定义为 <Object>
类型并在其中放入任何内容,但这不是好的做法。使用您的四个字段、getter 和 setter 创建一个简单的 class,并使用该类型的 ArrayList。这样就清楚多了!
你可以这样做:
List<Object> test = new ArrayList<>();
test.add(10);
test.add("Test");
test.add(1.0);
test.add('c')
根据您的需要,最好创建一个 class,例如 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;
}
}
一个创建列表类型的存储
您可能需要创建自己的 class 来表示这 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"));
创建一个封装 "element"
行为的 classpublic 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);
最好将字段定义为私有,然后通过getters/setters访问它们。
我不确定这是否值得推荐或有任何缺点,但您可以在不使用任何泛型的情况下初始化 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]