我有一个arrayList,其中传递了三个对象。
List lst = new ArrayList();
这里通过for循环添加实例
Circle c1 = new Circle();
lst.add(c1);
Triangle t1 = new Triangle();
lst.add(t1)
现在我如何使用indexOf
方法或其他方法找出哪一个是圆形,三角形并计算两者的面积并将其存储在一个arraylist中?
答案 0 :(得分:2)
假设Circle
和Triangle
类扩展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
}
}