C ++ Map и Java Entry - PullRequest
       8

C ++ Map и Java Entry

0 голосов
/ 03 декабря 2011
  map<string, pair<int, int> > common;     
 map<string, pair<int, int> >::iterator cIter = common.find(code);
        if(cIter == common.end())
        {
            pair<int, int> values(1, count);
            common.insert(make_pair(code, values));
        }
        else
            cIter->second.first++;

Кто-нибудь может помочь мне преобразовать приведенный выше код в Java?

 private java.util.HashMap<String, Entry<Integer, Integer>> common = new java.util.HashMap<String, Entry<Integer, Integer>>();
 Entry<Integer, Integer> cIter = common.get(code);
            if (cIter == common.) {
                Entry<Integer, Integer> values =  new AbstractMap.SimpleEntry<Integer, Integer>(1, count);
                common.put(code, values);
            } else {
                cIter.second.first++;
            }

Это то, что я пробовал, означает, что second означает getValues ​​(), а first означает getKey ()?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2011

В Java нет класса кортежа Pair, и я не уверен, что использование Entry является лучшим выбором в этом случае, так как вам необходимо обновить «ключ» Entry.

Вместо этого вы должны создать класс для этого.

class Counters {
    int counter1; // use meaningful names here
    final counter2;
    public Counters(counter1, counter2) { this.counter1 = counter1; this.counter2 = counter2; }
}

Map<String, Counters> common = new HashMap<>();

Counters counters = common.get(code);
if (counters == null)
    common.put(code, counters = new Counters(1, count));
else
    counters.counter2++;

if (itr.second.first> max) {max = itr.second.first; minCount = itr.second.second; code = itr.next (). getKey (); }

if(counters.counter1 > max) {
     max = counters.counter1;
     minCount = counters.counter2;
     code = null; // isn't needed AFAIK.
}
0 голосов
/ 03 декабря 2011

Функция Java Hashmap get возвращает ноль, если карта не содержит ключ.Это, кажется, пробел в вашем коде Java вышеСм .: http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html

Обратите внимание, что некоторые люди предлагают использовать небольшой класс, а не пытаться использовать общую структуру, такую ​​как Entry (которая фактически предназначалась для представления пары ключ / значение на карте).Смотрите: Что является эквивалентом пары C ++в Java?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...