Map的比較與遍歷

/**
 * 中午12點30定時推送邏輯:
 *      
 *      下午排班和上午排班不同的進行推送
 *      
 * @author Qcl
 * @version v1.1
 * @throws ParseException
 */
//@Test
public void test1() throws ParseException{
        int flag = 1;
        List<Room> rooms = (List<Room>) roomRepository.findAll();
        List<Schedule> scheduleList = null;
        List<Schedule> scheduleList2 = null;
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        Map<Integer, Integer> map2 = new HashMap<Integer, Integer>();
        Map<Integer, Integer> pushMap = new HashMap<Integer, Integer>();
        for(Room room : rooms){
                scheduleList = scheduleRepository.findByRoom_idAndFlagAndEffectdate(room.getId(), 0, stringToDate(formatDate(new Date(), "yyyy-MM-dd"), "yyyy-MM-dd"));
                scheduleList2 = scheduleRepository.findByRoom_idAndFlagAndEffectdate(room.getId(), 1, stringToDate(formatDate(new Date(), "yyyy-MM-dd"), "yyyy-MM-dd"));
                map.put(room.getId(), 99999);
                map2.put(room.getId(), 99999);
                if(scheduleList.size() > 0){
                        map.put(room.getId(), scheduleList.get(0).getUser().getId());
                }
                if(scheduleList2.size() > 0){
                        map2.put(room.getId(), scheduleList2.get(0).getUser().getId());
                }
                if(!map2.containsValue(map.get(room.getId()))){
                        pushMap.put(room.getId(), map2.get(room.getId()));
                }
        }
        System.out.println(pushMap.size());
        /**
         *  迭代器遍歷map
         */
        Iterator<Entry<Integer, Integer>> it = pushMap.entrySet().iterator();
        while(it.hasNext()){
                Entry<Integer, Integer> entry = ((Iterator<Entry<Integer, Integer>>) it).next();
                int k = entry.getKey();
                Integer v = entry.getValue();
                /*
                 * 知識點:增強for循環無法修改map內容,會報java.util.ConcurrentModificationException異常
                 *              迭代器迭代時,使用迭代器iterator.remove()不會有問題
                 */
                /*if(v == null){
                        it.remove();
                }*/
                String room_name = roomRepository.findOne(k).getName();
                String user_name = userRepository.findOne(v).getName();
                if(user_name == null){
                        user_name = "醫生不顯示";
                }
                System.out.println(room_name + " => " + user_name);
        }
        /**
         *  增強for循環遍歷map
         */
        for(Map.Entry<Integer, Integer> entry : pushMap.entrySet()){
                int k = entry.getKey();
                Integer v = entry.getValue();
                String room_name = roomRepository.findOne(k).getName();
                String user_name = userRepository.findOne(v).getName();
                if(user_name == null){
                        user_name = "醫生不顯示";
                }
                System.out.println(room_name + " => " + user_name);
        }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章