如何在ArrayList中打印对象的名称?

时间:2014-11-23 02:14:28

标签: java arraylist

我已经编写了这段代码:

import java.util.ArrayList;
import java.util.List;


public class TestBox {

    public static void main(String[]args){

        ShoeBox nike = new ShoeBox();
        Box present = new CandyBox(3,2,6);
        JewelryBox gift = new JewelryBox();
        Box pictures = new ShoeBox();
        Box skittles=new CandyBox(6,3,1);
        CandyBox dots=new CandyBox(3,2,1);
        Box jareds=new JewelryBox();
        List<Box> boxes=new ArrayList<Box>();
        boxes.add(nike);
        boxes.add(present);
        boxes.add(gift);
        boxes.add(pictures);
        boxes.add(skittles);
        boxes.add(dots);
        boxes.add(jareds);

        double temp=0;
        for (Box x:boxes)
            temp=temp+x.getVolume();

        for (int i=0;i<boxes.size();i++)
            System.out.println(boxes.get(i));

        double count=0;
        for (int k=0;k<boxes.size();k++)
            if ((boxes.get(0).getVolume())<(boxes.get(k).getVolume()))
                count=boxes.get(k).getVolume();
        System.out.println("The box with the biggest volume is the "+boxes.get((int)count)+".  The dimensions of the box"
                + "are "+boxes.get((int)count).getLength()+" x "+boxes.get((int)count).getWidth()+" x "
                +boxes.get((int)count).getHeight()+".");
    }
}

这是我的名为Box的测试人员。子类在它们的创建中显示。打印出对象名称所需的代码行是什么,比如吃喝玩乐或者jareds?

我需要打印具有最大音量的对象的“名称”。让我们说对象“nike”的音量最大。主要底部的打印声明应该说“最大音量的盒子是耐克。尺寸是12 x 12 x 12。”

1 个答案:

答案 0 :(得分:0)

您希望打印符合特定条件且存储在您的收藏中的变量名称(您的List)。这种在Java 中是不可能的,因为在运行时您无法访问变量的名称。在这种情况下,您应该在类中添加一个字段,以帮助您识别您正在使用的对象实例。该字段可以是int idString name(为了简单起见)。

为方便起见,请在Box课程中添加此字段:

public class Box {
    //fields already declared here...
    //adding name field
    protected String name;
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

然后,在创建对象时填写此字段:

//setting the name of the object just with the name of the variable
//just for understanding purposes
//you cannot access to the name of the variable at runtime, no matter what
//also, you need to change the constructor of each class accordingly
ShoeBox nike = new ShoeBox("nike");
Box present = new CandyBox("present",3,2,6);
JewelryBox gift = new JewelryBox("gift");
Box pictures = new ShoeBox("pictures");
Box skittles=new CandyBox("skittles",6,3,1);
CandyBox dots=new CandyBox("dots",3,2,1);
Box jareds=new JewelryBox("jareds");

然后,当一个物体符合您的标准时,您可以将它用于您想要/需要的物品。

  • 标准:最大量
  • 怎么做:将其名称显示给用户

代码:

double temp = 0;
Box boxWithLargestVolume = null;
for (Box box : boxes) {
    if (temp < x.getVolume()) {
        temp = x.getVolume();
        boxWithLargestVolume = box;
    }
}
if (boxWithLargestVolume != null) {
    System.out.println("The box with the largest volume is: "
        + boxWithLargestVolume.getName());
}