使用循环java生成数组的名称
我想为创建的每个新数组生成一个新名称 我有一个SellAbleItem类,带有一个构造函数,它采用以下内容:使用循环java生成数组的名称,java,loops,arraylist,Java,Loops,Arraylist,我想为创建的每个新数组生成一个新名称 我有一个SellAbleItem类,带有一个构造函数,它采用以下内容: SellAbleItems Vodka = new Brunch("Brunch", 199); SellAbleItems Brunch = new Brunch("Vodka", 99); 我有这个数组列表 ArrayList<SellAbleItems> order = new ArrayList<SellAbleItems>(); 所以,
SellAbleItems Vodka = new Brunch("Brunch", 199);
SellAbleItems Brunch = new Brunch("Vodka", 99);
我有这个数组列表
ArrayList<SellAbleItems> order = new ArrayList<SellAbleItems>();
所以,我的问题是如何为order数组列表生成at新名称?我想要订单,被称为订单1、订单2、订单3等等。最后,可以打印这些名称。在创建地图之前,您不需要知道用户创建了多少订单,但您需要知道用户何时创建新订单。一旦您知道可以添加地图来保存订单,如下所示:
// Program initiates
Map<String, ArrayList<SellAbleItems>> orders = new HashMap<>();
// User places order 1
List<SellAbleItems> order1 = new ArrayList<>();
order1.put(Vodka);
order1.put(Brunch);
orders.put("order1", order1);
// Some time later user places order 2
List<SellAbleItems> order2 = new ArrayList<>();
order2.put(Foo);
order2.put(Bar);
orders.put("order2", order2);
//程序启动
映射顺序=新的HashMap();
//用户下单1
列表顺序1=新的ArrayList();
订单1.放(伏特加);
命令1.放置(早午餐);
下单(“下单1”,下单1);
//一段时间后,用户下订单2
List order2=new ArrayList();
订单2.put(Foo);
命令2.放置(条);
下单(“下单2”,下单2);
然后,您可以在映射中循环,如下所述:
更好的抽象方法是创建一个Order
类,该类有一个列表
,您可以向其中添加您的可销售项目
,然后您可以保留一个列表
,但这将是一个不同的问题。您不必给出名称,只需直接添加新早午餐
order.add(new Brunch("Brunch", 199));
order.add(new Brunch("Vodka", 99));
order.add(new Brunch("Whisky", 1199));
如果你想列出所有的钥匙,那么这就行了
Map<String, ArrayList<SellAbleItems>> orders = new HashMap<>();
orders.put("orderA", order1);
orders.put("orderB", order2);
Set<String> keys = orders.keySet();
for(int i = 0; i < orders.size(); i++) {
System.out.println(keys.toArray()[i]);
}
使用列表
,或地图
。地图的优点是,你可以选择一个名字(必须是唯一的),但我不知道会下多少订单。可能是10或20。描述一下你真正想要什么。避免XY问题。Map
具有通用长度。您始终可以添加新元素。(太长了,读不下去了,这是用Python,但是TL;DR,使用一个数据结构)。但是当用户与我的系统交互时,我不知道会发出多少订单。所以我需要某种for循环来生成唯一的名称,比如order1、order2、order3等等。如果他想遍历所有的顺序,就可以执行顺序。keySet()获取所有的键,并使用循环遍历所有的名称?@PeterHoldensgaard你不需要知道顺序的数量。每当用户创建新订单时,您都会创建一个新列表并将其添加到地图中。您可以使用orders.size()
计算您有多少订单,并可以使用该索引命名下一个条目。@LewisJefferies是的,如下所述:
Map<String, ArrayList<SellAbleItems>> orders = new HashMap<>();
orders.put("orderA", order1);
orders.put("orderB", order2);
Set<String> keys = orders.keySet();
for(int i = 0; i < orders.size(); i++) {
System.out.println(keys.toArray()[i]);
}
orderA
orderB