Извлечение списка из хэш-карты с помощью объекта списка в Java - PullRequest
0 голосов
/ 29 марта 2019

Я сравниваю два HashMaps и извлекаю ключи в первом HashMap, которых нет во втором HashMap. Это успешно. Мне нужно извлечь список значений отсутствующих ключей, и я получаю нулевое значение. Чего мне не хватает?

        ChannelsSingleBundle channelSingle = new ChannelsSingleBundle();
        //get ChannelSingle Map
        HashMap<String, List<ChannelSingle>> singleChannelsMap = channelSingle.getChannelSinglesData();
        //get Dcti map for Channels Single
        DCTIBundle dctiChannel = new DCTIBundle();
        HashMap<String, List<DCTI>> dctiChannelSingleMap = dctiChannel.getChannelSinglesData();
        //Get keys for channels hash
        HashSet<String> unionKeys = new HashSet(singleChannelsMap.keySet());
        unionKeys.addAll(dctiChannelSingleMap.keySet());
        unionKeys.removeAll(dctiChannelSingleMap.keySet());
        System.out.println("Keys in SiingleMap Not in DCTI Map: \n" + unionKeys);//Gives me the coorect keys
        List<ChannelSingle> singles = new ArrayList<>();
        for (String key : unionKeys) {
            singles =  singleChannelsMap.get(key);//Attempt to get List<ChannelSingle> from the key Pair
        }
        for(ChannelSingle single: singles){
            System.out.println(single.getHostRefNumber());
        }

Редактировать: Как указано в комментариях, getHhostRefNumber был действительно нулевым. Теперь проблема в том, что в списке больше записей, чем должно быть. Мне нужно иметь записи, эквивалентные количеству ключей в unionKeys.

1 Ответ

0 голосов
/ 29 марта 2019

Можете ли вы попробовать ниже код:

        ChannelsSingleBundle channelSingle = new ChannelsSingleBundle();
        //get ChannelSingle Map
        HashMap<String, List<ChannelSingle>> singleChannelsMap = channelSingle.getChannelSinglesData();
        //get Dcti map for Channels Single
        DCTIBundle dctiChannel = new DCTIBundle();
        HashMap<String, List<DCTI>> dctiChannelSingleMap = dctiChannel.getChannelSinglesData();
        //Get keys for channels hash
        HashSet<String> unionKeys = new HashSet(singleChannelsMap.keySet());

        // You do not need to add these keys
        // unionKeys.addAll(dctiChannelSingleMap.keySet());  

        unionKeys.removeAll(dctiChannelSingleMap.keySet());
        System.out.println("Keys in SiingleMap Not in DCTI Map: \n" + unionKeys);//Gives me the coorect keys
        List<ChannelSingle> singles = new ArrayList<>();
        for (String key : unionKeys) {
            singles =  singleChannelsMap.get(key);//Attempt to get List<ChannelSingle> from the key Pair

            for(ChannelSingle single: singles){
                System.out.println(single.getHostRefNumber());
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...