如何在ArrayList中存储不同类型的对象

时间:2018-02-09 09:51:03

标签: java

我需要在ArrayList中存储不同的对象。物体在性质上相似但不同并且具有不同的方法。

.format()

那么使用什么我可以使用对象中的所有方法。

5 个答案:

答案 0 :(得分:4)

可以创建一个ArrayList<Object>。这是一个可以存储任何内容的列表。使用它并不是很有用,因为取出东西基本上会迫使你检查它们的类型以便调用任何方法。出于这个原因,你几乎应该总是避免这样做。

收藏中的对象通常有一些共同之处 - 如果他们不这样做,你应该重新考虑为什么你将它们扔进同一个集合中。在你的情况下,他们是所有形状。因此,请考虑添加一个共享接口,例如Shape,它结合了常用功能。

我略微简化,因为你有2D和3D形状的概念,但这里是要点:

interface Shape
{
    double area();
    double perimeter();
}

class Circle implements Shape
{
    // ...

    public double area()
    {
        return radius * radius * Math.PI;
    }

    public double perimeter()
    {
        return 2 * Math.PI * radius;
    }
}

class Square implements Shape
{
     //...
}

然后创建Shape s列表:

List<Shape> shapes = Arrays.asList(new Circle(3), new Square(4), ...);

答案 1 :(得分:0)

ArrayList<Object> list = new ArrayList<Object>();

你可以调用所有方法,包括Object类方法。

答案 2 :(得分:0)

我认为您可以创建一个对象列表,并在使用某人时将其转换为特定类型

List<Object> obj = new ArrayList<Object>();

if (obj.get(i) instanceof Class) {
    Class objCast = (Class)obj 
}

Objects DOC

答案 3 :(得分:0)

这是你必须要做的。

  1. 定义Shape界面..

  2. 实施Circle and Cube的界面

  3. 为Circle和Cube创建形状对象,并将它们添加到arraylist ..

  4. 以下代码:

    public interface Shape {
    
        public void draw();
    
    }
    
    
    
    public class Circle implements Shape {
    
    @Override
    public void draw() {
        System.out.println("Drawing Circle");
    
    }
    
    }
    
    
    
    public class Cube implements Shape {
    
    @Override
    public void draw() {
        System.out.println("Drawing Cube");
    }
    
    }
    
    
    
    public class Simulator{
    
    public static void main(String[] s){
    
        Shape s1 = new Circle();
        Shape s2 = new Cube();
    
        ArrayList<Shape> shapeList = new ArrayList<Shape>();
        shapeList.add(s1);
        shapeList.add(s2);
    }
    }
    

答案 4 :(得分:0)

 import string
    variables={}
    for value in string.ascii_lowercase[0:9]:
        for i in range(10):
            variables.update({value + str(i): 0})

    print(variables)

您可以存储任何对象类型。