在Map容器使用过程中出现一个问题,同一个变量名充当Key的话后面的数据会覆盖前面循环的数据

经查证发现存在IdentityHashMap这个容器,可以避免相同Key的数据覆盖

Map<String, Object>[] data = new IdentityHashMap[20];
        int[] curr = new int[10];
        int len = lastinfo.size();
        System.out.println(len);
        //十条数据一页
        int cnt = 0;
        i = 0;
        while (i < len) {
            List<hotelInfo> hotel = new ArrayList<hotelInfo>();
            curr[cnt]=cnt + 1;
            for (i = cnt * 10; i < (cnt+1) * 10; i++) {
                if (i >= len)
                    break;
                hotel.add(lastinfo.get(i));
            }
            System.out.println(hotel);
            if (hotel.isEmpty())
                break;
            data[cnt] = new IdentityHashMap<String, Object>();
            data[cnt].put("curr", curr[cnt]);
            data[cnt].put("all", len);
            data[cnt].put("info", hotel);
            cnt++;
        }

关键是while循环中的hotel初始化,让IdentityHashMap识别为不同的Key

参考网址:IdentityHashMap和HashMap的区别

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐