我希望你能帮助我,我正在尝试订购这些数组
int pumpno[] = new int[] { 3, 4, 5, 3, 4, 6};
String desc[] = new String[] {"jam", "chesse", "milk", "water", "soup","bread"};
int cost[] = new int[] {10, 15, 23, 43, 12, 67};
我想按以下顺序打印:
id 3
----------
desc jam
cost 10
desc water
cost 43
id 4
----------
desc chesse
cost 15
desc soup
cost 12
id 5
----------
desc milk
cost 23
id 6
----------
desc bread
cost 63
例如,每个数组在这种情况下具有相同的长度为9,在firts数组中,id的值与id相同,我只想打印一次id的值并打印下面的所有de值相同的身份
我只是想知道如果我用这些
来做同等重要的idSet<String> set = new HashSet<String>();
for (int i = 0; i < pumpno.length; i++) {
if (set.contains(pumpno[i])) {
Log.d("Duplicate ", pumpno[i]);
} else {
set.add(pumpno[i]);
}
但我不知道如何像上面的例子一样打印。如果你可以帮助我,非常感谢
答案 0 :(得分:0)
您可以使用ID为密钥的HashMap
和Set<Product>
作为值(如果您不希望有重复项或列表,如果您想要产品订购)。您可以在一次迭代中填写它并在另一次迭代中打印。
产品将是具有描述和价格的数据结构。
Map<int, Set<Product>> productsById = new HashMap<>();
for (int i = 0; i < pumpno.length; i++) {
if (productsById.containsKey(pumpno[i])) {
//add product to existing set
productsById.get(pumpno[i]).add(new Product(desc[i], cost[i]));
} else {
//create set since this is first time id is shown
Set<Product> set = new HashSet<Product>();
set.add(new Product(desc[i], cost[i]);
productsById.put(pumpno[i], set);
}
}
String newLine = System.getProperty("line.separator");
for (int id : productsById.keySet()){
System.out.println("id " + id + newLine);
for (Product product : productsById.get(id)){
System.out.println("description" + product.getDescription() + newLine);
System.out.println("cost" + product.getCost() + newLine);
}
}
希望我没有犯错,因为我在markdown中键入了这个,但这是逻辑。