indexOf用于java中ArrayList的对象

时间:2015-07-07 08:29:00

标签: java arraylist

我有一个arrayList,其中传递了三个对象。

List lst = new ArrayList();

这里通过for循环添加实例

Circle c1 = new Circle();
lst.add(c1);

Triangle t1 = new Triangle();
lst.add(t1)

现在我如何使用indexOf方法或其他方法找出哪一个是圆形,三角形并计算两者的面积并将其存储在一个arraylist中?

4 个答案:

答案 0 :(得分:2)

假设CircleTriangle类扩展Shape,您可以尝试这样做:

List<Shape> lst = new ArrayList<Shape>();

Shape c1 = new Circle();
Shape t1 = new Triangle();
lst.add(c1);
lst.add(t1);

for (Shape shape : lst) {
    if (shape instanceof Circle) {
        // handle the circle
    }
    else if (shape instanceof Triangle) {
       // handle the Triangle
    }
}

答案 1 :(得分:1)

只需调用“indexof()”方法即可。它可以找到。

答案 2 :(得分:1)

public interface Shape {
    Long area();
}

public class Circle implements Shape {
    public Long area() {
        return 0l; // your code here
    }
}

三角类相同,然后计算区域并放入另一个列表...(java 8)

ArrayList<Shape> shapes = new ArrayList<>();
shapes.add(new Circle());
shapes.add(new Triangle());

ArrayList<Long> areas = new ArrayList<>();
areas.addAll(shapes.stream().map(s -> s.area()).collect(Collectors.toList()));

答案 3 :(得分:-1)

如果您知道将在Circle实例之前插入Triangle实例,那么您可以使用偶数索引来检索Circle实例和奇数索引来检索Triangle实例1}}实例。否则,您可以遍历列表,检查每个对象是否是任一类的实例(例如obj instanceof Circle),然后执行区域计算。

for(Object obj : lst){
    if(obj instanceof Circle){
        Circle circle = (Circle)obj;
        // Perform the area calculations here
    }else if(obj instanceof Triangle){
        Triangle triangle = (Triangle)obj;
        // Perform the area calculations here
    }
}