Member 11807654 Ответов: 1

Как объединить два члена multimap в java?


Я написал multimap на java и хочу объединить два элемента этой карты друг с другом. карта выглядит следующим образом:
Map<Integer,Map<Integer,Integer>> groups = new HashMap<>();

например, если группа[0] равна 0 => {0=1, 1=10} а группа[1] - это 1 => {0=2, 1=3}, я хочу, чтобы ответ был 1 => {0=2, 1=3,2=1, 3=10}. как я могу это сделать?

Что я уже пробовал:

Я искал его, но не мог найти правильного решения

1 Ответов

Рейтинг:
0

CPallini

Ну, если чудесное Java библиотеки не предоставляют прямого решения, тогда, знаете ли, вы можете прибегнуть к использованию методов разработки, таких как итерации, условные операторы и тому подобное...

Set <Integer> s0 = m.get(0).keySet();
Set <Integer> s1 = m.get(1).keySet();

Iterator <Integer> it0 = s0.iterator();
Iterator <Integer> it1 = s1.iterator();


Integer n0 = null;
Integer n1 = null;

Map <Integer, Integer> rm = new HashMap<Integer, Integer>();

int count = 1;

while (true)
{

  if ( n0 == null && it0.hasNext() )
    n0 = m.get(0).get(it0.next());

  if ( n1 == null && it1.hasNext() )
    n1 = m.get(1).get(it1.next());

  if ( n0 == null )
  {
    if (n1 == null)
      break;
    else
    {
      rm.put(count, n1);
      n1 = null;
      ++count;
    }
  }
  else
  {// here n0 != null
    if (n1 == null)
    {
      rm.put(count, n0);
      n0 = null;
      ++count;
    }
    else
    {
      if ( n0 < n1 )
      {
        rm.put(count, n0);
        n0 = null;
        ++count;
      }
      else
      {
        rm.put(count, n1);
        n1 = null;
        ++count;
      }
    }
  }


Member 11807654

спасибо, но моя карта-это Мультикарта.Я нашел решение, но не знаю, как изменить его для работы на Мультикарте. решение было map. merge(K key, V value, BiFunction<? супер V,? супер V,? распространяется в&ГТ; remappingFunction) инструкция(встречается в: http://farenda.com/java/java-util-map-merge-key-value-bifunction/). это суммирует ценность членов, но я не хочу. Я просто хочу объединить эти два элемента в один элемент карты. как функция переназначения может быть записана в моем коде?