使用对象的类名从Java Vector中检索对象

使用对象的类名从Java Vector中检索对象,java,string,object,vector,Java,String,Object,Vector,我将从解释场景开始。 我必须创建一个向量来保存一组圆。 然后我创建一个圆形对象,并将其添加到向量中。 最后,我必须打印列表中每个圆圈的状态(状态定义并不重要,只是颜色和位置等) 基本上,我的问题是,我如何保持圆圈,以便我可以传递其中一个圆圈的名称,它将打印正确的圆圈状态。向您展示我的代码可能会更清晰 我有3个类,主要的一个叫做Lab83Test,向量的一个叫做CircleList,圆圈的一个叫做Circle。(格式变得很奇怪,我无法修复它,因此道歉!) Lab83测试: public class

我将从解释场景开始。 我必须创建一个向量来保存一组圆。 然后我创建一个圆形对象,并将其添加到向量中。 最后,我必须打印列表中每个圆圈的状态(状态定义并不重要,只是颜色和位置等)

基本上,我的问题是,我如何保持圆圈,以便我可以传递其中一个圆圈的名称,它将打印正确的圆圈状态。向您展示我的代码可能会更清晰

我有3个类,主要的一个叫做Lab83Test,向量的一个叫做CircleList,圆圈的一个叫做Circle。(格式变得很奇怪,我无法修复它,因此道歉!)

Lab83测试:

public class Lab83Test {

    public static void main(String[] args) {
        makeNewCircle();
    }
    public static void makeNewCircle() {
        CircleList newList = new CircleList();
        Circle newCircle = new Circle();
        newList.addCircle(newCircle);
        newCircle.makeVisible();
        newList.printDetails();
    }
}
import java.util.Vector;

public class CircleList {
    private Vector circleVector;

    public CircleList() {
        circleVector = new Vector();
    }
    public void addCircle(Circle circleName) {
            circleVector.add(circleName);
            printDetails();
    }
    public void addCircleToPlace(Circle circleName, int pos) {
        circleVector.add(pos, circleName);
        printDetails();
    }
    public void removeCircleFromPos(int pos) {
        circleVector.remove(pos);
        printDetails();
    }
    public void removeAllCircles(int pos) {
        circleVector.clear();
        printDetails();
    }
    public void printDetails() {

    }
}
圆圈列表:

public class Lab83Test {

    public static void main(String[] args) {
        makeNewCircle();
    }
    public static void makeNewCircle() {
        CircleList newList = new CircleList();
        Circle newCircle = new Circle();
        newList.addCircle(newCircle);
        newCircle.makeVisible();
        newList.printDetails();
    }
}
import java.util.Vector;

public class CircleList {
    private Vector circleVector;

    public CircleList() {
        circleVector = new Vector();
    }
    public void addCircle(Circle circleName) {
            circleVector.add(circleName);
            printDetails();
    }
    public void addCircleToPlace(Circle circleName, int pos) {
        circleVector.add(pos, circleName);
        printDetails();
    }
    public void removeCircleFromPos(int pos) {
        circleVector.remove(pos);
        printDetails();
    }
    public void removeAllCircles(int pos) {
        circleVector.clear();
        printDetails();
    }
    public void printDetails() {

    }
}

circle类不太重要,它有很多方法来移动圆和其他东西。最重要的是它必须返回其状态。

如果您只想迭代列表中的所有圆圈并打印它们的名称,可以通过以下方式执行:

public void printDetails() {
  for (Circle c: circleVector) {
    System.out.println(String.format("%s: center=(%.1f/%.1f) radius=%.1f", c.getName(), c.getCenterX(), c.getCenterY(), c.getRadius()));
  }
}
我不知道你的
Circle
类看起来如何,所以我只是假设了一些方法名

如果要按名称查找特定的圆:

for (Circle c: circleVector) {
  if (c.getName().equals(nameToFind)) return c;
}
或者您可以使用
映射
而不是向量,只需执行
返回circleMap.get(name)。您的
addCircle()
将如下所示:

public void addCircle(Circle circle) {
  circleMap.add(circle.getName(), circle);
  printDetails();
}
Edit1:关于您的评论:您的向量没有定义的类型。更改此项:

...
public class CircleList {
  private Vector<Circle> circleVector;

  public CircleList() {
    circleVector = new Vector<Circle>();
  }
  ...
。。。
公共类循环列表{
专用矢量电路采集器;
公共循环列表(){
circleVector=新向量();
}
...

为什么不能修改格式?^^^“圆的名称”是什么?向量只处理列表中圆的索引的访问。另外:您到底想要什么?除了
printDetails()
尚未实现。为什么不维护一个
映射
来存储从名称到
实例的映射。这是我的观点-我不明白该如何做。你如何创建一个包含某个对象的向量,然后允许你遍历它来调用其中所有圆的方法。这就是我尝试的d之前,尽管我发现错误:java.lang.Object required:Circle
我还没有完全理解这一点,所以我不确定它在问什么,因为你的向量没有指定它的类型。请尝试使用
向量
Edit1@brimborium..当然,括号中的内容是一个糟糕的想法。因此,您可以将其从很有价值的选择。@RohitJain同意,这就是为什么我把它放在括号里。但是你是对的,把它去掉了…;)非常感谢你,brimborium,这非常有效。我的讲师非常擅长教授一件事,然后根据完全不同的东西来设置工作,所以我在黑暗中刺伤了很多东西,我就是不能做这件事t、 非常感谢!