использование Guava BiMap в Java - PullRequest
0 голосов
/ 05 июля 2018

я впервые использую эту библиотеку.

, чтобы объяснить мою проблему, давайте возьмем этот крошечный пример:

package javaapplication7;


import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;


public class JavaApplication7 {
public static void main(String[] args) {
    BiMap<Integer, Integer> biMap = HashBiMap.create();

    biMap.put(0, 0);
    biMap.put(2, 1);
    biMap.inverse().put(1,3);

    System.out.println(biMap.get(0));
    System.out.println(biMap.get(2));
    System.out.println(biMap.inverse().get(1));

    }

}

результат этой программы:

0

1011 * нуль *

3

Обычно для второго отпечатка я должен получить 1 , может кто-нибудь объяснить мне, почему я получаю нулевое значение?

В моей программе я должен поставить целое число на карте без определенного порядка, как я могу это сделать?

Я хочу получить 0 1 3 результат для предыдущего примера.

Спасибо.

1 Ответ

0 голосов
/ 05 июля 2018

Вставляя ключ 1 в инвертированное представление двунаправленного текста, вы фактически перезаписали значение 1, которое вы отобразили ранее (то есть в "нормальном" "biMap больше нет ключа 2, но в 3 есть значение 1). Просто посмотрите, что происходит у вас biMap после каждой операции:

biMap.put(0, 0);
System.out.println(biMap); // {0=0}
biMap.put(2, 1);
System.out.println(biMap); // {0=0, 2=1}
final Integer previousValue = biMap.inverse().put(1, 3);
System.out.println(biMap); // {0=0, 3=1}
System.out.println(previousValue); // 2
...