Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用循环java生成数组的名称_Java_Loops_Arraylist - Fatal编程技术网

使用循环java生成数组的名称

使用循环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>(); 所以,

我想为创建的每个新数组生成一个新名称

我有一个SellAbleItem类,带有一个构造函数,它采用以下内容:

  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