要创建一个包含重复对象的列表,显示为“2 x element1、5 x element2、3 x element4”等,您可以结合使用 Java Map 接口和 Collections.frequency() 方法。
首先,您可以使用 HashMap 将对象存储为键并将它们的频率存储为值。然后,您可以遍历 ArrayList 并使用 put() 方法将对象添加到地图并增加频率值(如果地图中已存在该对象)。
接下来,您可以使用 Collections.frequency() 方法获取 ArrayList 中每个对象的频率。
以下是如何实现 displayCartList() 方法的示例:
public void displayCartList() {
HashMap<Object, Integer> map = new HashMap<>();
for (Object obj : cartList) {
if (map.containsKey(obj)) {
map.put(obj, map.get(obj) + 1);
} else {
map.put(obj, 1);
}
}
System.out.println("Items in your Cart:");
for (Object obj : map.keySet()) {
System.out.println(map.get(obj) + " x " + obj.getName());
}
}
此方法将遍历 cartList 并创建一个 HashMap,其中对象作为键,它们的频率作为值。然后它通过遍历映射中的键并显示每个对象的频率和名称来打印出购物车中的项目。
您还可以对要在购物车中显示的项目列表进行排序,您可以使用 Collections.sort() 方法按名称对列表进行排序。
public void displayCartList() {
HashMap<Object, Integer> map = new HashMap<>();
for (Object obj : cartList) {
if (map.containsKey(obj)) {
map.put(obj, map.get(obj) + 1);
} else {
map.put(obj, 1);
}
}
System.out.println("Items in your Cart:");
List<Object> list = new ArrayList<>(map.keySet());
Collections.sort(list, new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
return o1.getName().compareTo(o2.getName());
}
});
for (Object obj : list) {
System.out.println(map.get(obj) + " x " + obj.getName());
}
}
这样您就可以将购物车中的商品按名称排序
请注意,上面的示例假定您的 Object 类有一个返回对象名称的 getName() 方法。如果该类有不同的方法或属性来访问名称,您应该相应地调整代码。