java - 使用类名称从Java向量中检索对象

  显示原文与译文双语对照的内容
0 0

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

我的问题是,如何保持圆,以便我能够传递它们中的一个,它会打印出正确的圆状状态。 让你看我的代码可能更清楚。

我有 3个类,那个主要叫做 Lab83Test,矢量一,称为 CircleList,称为圆,称为圆。 ( 格式已经很怪异了,我无法修复,所以抱歉) !

Lab83Test:


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();
 }
}

CircleList:


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() {

 }
}

圆类并不是很重要,它有很多方法可以移动圆形和内容。 最重要的是,它必须返回它的状态。

时间: 原作者:

0 0

如果你只想循环访问列表中的所有 Circel,并打印它们的名称,可以按以下方式执行:


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;
}

或者你可以用 Map<String, Circle> 代替向量,只做 return 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>();
 }
. . .

原作者:
...