类
public class Item { private String itemNo; private String name; private String skuNo; private String skuName;
itemNo 有重复,但是skuNo不会重复。
比如同样是iphoneX itemNo一样,但是不同颜色skuNo就会不同。
这个时候商品列表查询的时候,我们不需要将所有商品精细到skuNo这个粒度,
而是根据itemNo进行展示。那么就需要分组
Item i1 = new Item("i1", "iphonex", "a321", "黑色x"); Item i2 = new Item("i1", "iphonex", "a345", "银色x"); Item i3 = new Item("i2", "iphone8p", "a220", "黑色8p"); Item i4 = new Item("i3", "iphoneXRS", "a666", "512G白色XR"); Item i5 = new Item("i2", "iphone8p", "a223", "金色8P"); List<Item> items = Arrays.asList(new Item[]{i1,i2,i3,i4,i5}); System.out.println("-----------------"); /*2、分组算法**/ Map<String, List<Item>> itemNoMap = new HashMap<>(); for (Item item : items) { List<Item> tempList = itemNoMap.get(item.getItemNo()); /*如果取不到数据,那么直接new一个空的ArrayList**/ if (tempList == null) { tempList = new ArrayList<>(); tempList.add(item); itemNoMap.put(item.getItemNo(), tempList); } else { /*某个sku之前已经存放过了,则直接追加数据到原来的List里**/ tempList.add(item); } }
道理很简单,就是利用Map 用itemNo做key