我有一个用java编写的程序,迫切需要优化。现在我有3个ArrayLists,我想简化为1列表类型的东西。我有一个用于矩形的ArrayList,一个用于布尔值,一个用于我用我的一个类创建的对象。我们现在可以称之为“项目”。我保持三个ArrayLists的顺序相同,对所有这些都做同样的事情。例如,每次我创建一个新项目时,我将它添加到项目ArrayList,我向该ArrayList添加一个布尔值,我向第三个ArrayList添加一个矩形。 我正在寻找解决方案。我尝试过HashMaps,但每个列表项只需要2条信息。有一次,我尝试了一个ArrayList,但这是一个巨大的痛苦处理。如果有人能帮我找到解决方案,我会非常感激。非常感谢。
编辑:感谢所有快速回答
答案 0 :(得分:10)
编写一个新的类,其中包含“rectangle”,boolean和“item”作为字段,并将该类的实例存储在一个List中。
例如:
public class MyRecord {
private Rectange rectangle;
private boolean flag;
private Item item;
// getters / setters
}
然后在你的其他课程中(无论你的名单在哪里):
...
List<MyRecord> list = ...; // initialize or obtain from somewhere
list.get(0).setFlag(false); // modify field within your container object
答案 1 :(得分:5)
为什么不将三个相关项目存储在一个类中,然后列出它们?
class MyThingy {
public MyItem item;
public boolean flag;
public Rectangle rect;
}
List<MyThingy> myList = new ArrayList<MyThingy>();
根据需要调整public
/ private
和getters / setter。
答案 2 :(得分:2)
我脑子里唯一想到的就是做一个引用布尔,矩形和其他对象的对象。
答案 3 :(得分:1)
您需要一个数据类,它将三个对象作为字段,并创建数据对象列表 像这样:
public class ItemData {
private final Item item;
private final boolean flag;
private final Rectangle rectangle;
private ItemData(Item item, boolean flag, Rectangle rectangle) {
this.item = item;
this.flag = flag;
this.rectangle = rectangle;
}
public Item getItem() {
return item;
}
public boolean isFlag() {
return flag;
}
public Rectangle getRectangle() {
return rectangle;
}
}
public static void main(String[] args) {
List<ItemData> list = new ArrayList<ItemData>();
}
哦......也许他们会给第二,第三等奖品。)
答案 4 :(得分:0)
很难说没有更多的背景信息,例如列表中的项目之间的关系是什么,但我猜你可以通过简单的方式做到这一点:
创建一个具有矩形和布尔值作为实例变量的对象。
如果您认为这不合适,可以将Hashtable嵌套在另一个哈希表中,但我不一定会建议,因为它会给您的程序增加不必要的复杂性。