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