Рубрики
Без рубрики

Путеводитель по таблице Гуава

В этом учебнике мы покажем, как использовать интерфейс таблицы Google Guava и его многочисленные реализации.

Автор оригинала: baeldung.

1. Обзор

В этом учебнике мы покажем, как использовать google Guava в Таблица интерфейса и его многочисленных реализаций.

Гуава Таблица представляет собой таблицу, похожую на структуру, содержащую строки, столбцы и связанные с ними значения ячеев. Строка и столбец действуют как упорядоченная пара ключей.

2. Таблица Гуавы Google

Давайте посмотрим, как использовать Таблица класс.

2.1. Зависимость от Maven

Начнем с добавления зависимости библиотеки Гуавы от Google в пом.xml :


    com.google.guava
    guava
    29.0-jre

Последнюю версию зависимости можно проверить здесь .

2.2. О

Если бы мы представляли Гуаву стол использование Коллекции присутствует в ядре Java, то структура будет карта строк, где каждая строка содержит карту столбцов с связанными значениями ячейки.

Таблица представляет собой специальную карту, где два ключа могут быть указаны в комбинированном порядке для обозначения одного значения.

Это похоже на создание карты карт, например, Карта<УниверситетНай, Карта<КурсыОфицер, SeatAvailable>> . Таблица также будет идеальным способом представления линкоров игровой доске.

3. Создание

Можно создать экземпляр Таблица несколькими способами:

  • Использование создать метод из класса HashBasedTable который использует LinkedHashMap внутренне:

  • Если нам нужна Таблица ключи строки и клавиши столбца должны быть заказаны по их естественному заказу или путем поставки компараторов, можно создать экземпляр Таблица с помощью создать метод из класса под названием TreeBasedTable , который использует TreeMap внутренне:

  • Если мы заранее знаем ключи строки и клавиши столбца, а размер стола фиксируется, вспользуйте создать метод из класса ArrayTable :

  • Если мы намерены создать непреложный экземпляр Таблица чьи внутренние данные никогда не изменятся, используйте Неизменяемый класс (создание, которое следует шаблону строителя):

4. Использование

Начнем с простого примера, показывающего использование Таблица .

4.1. Поиск

Если мы знаем ключ строки и ключ столбца, то мы можем получить значение, связанное с строкой и ключом столбца:

@Test
public void givenTable_whenGet_returnsSuccessfully() {
    Table universityCourseSeatTable 
      = HashBasedTable.create();
    universityCourseSeatTable.put("Mumbai", "Chemical", 120);
    universityCourseSeatTable.put("Mumbai", "IT", 60);
    universityCourseSeatTable.put("Harvard", "Electrical", 60);
    universityCourseSeatTable.put("Harvard", "IT", 120);

    int seatCount 
      = universityCourseSeatTable.get("Mumbai", "IT");
    Integer seatCountForNoEntry 
      = universityCourseSeatTable.get("Oxford", "IT");

    assertThat(seatCount).isEqualTo(60);
    assertThat(seatCountForNoEntry).isEqualTo(null);
}

4.2. Проверка для входа

Мы можем проверить наличие записи в Таблица на основе:

  • Ключ строки
  • Ключ колонки
  • Ключ строки и клавиша столбца
  • ценность

Давайте посмотрим, как проверить наличие записи:

@Test
public void givenTable_whenContains_returnsSuccessfully() {
    Table universityCourseSeatTable 
      = HashBasedTable.create();
    universityCourseSeatTable.put("Mumbai", "Chemical", 120);
    universityCourseSeatTable.put("Mumbai", "IT", 60);
    universityCourseSeatTable.put("Harvard", "Electrical", 60);
    universityCourseSeatTable.put("Harvard", "IT", 120);

    boolean entryIsPresent
      = universityCourseSeatTable.contains("Mumbai", "IT");
    boolean courseIsPresent 
      = universityCourseSeatTable.containsColumn("IT");
    boolean universityIsPresent 
      = universityCourseSeatTable.containsRow("Mumbai");
    boolean seatCountIsPresent 
      = universityCourseSeatTable.containsValue(60);

    assertThat(entryIsPresent).isEqualTo(true);
    assertThat(courseIsPresent).isEqualTo(true);
    assertThat(universityIsPresent).isEqualTo(true);
    assertThat(seatCountIsPresent).isEqualTo(true);
}

4.3. Удаление

Мы можем удалить запись из Таблица путем поставки ключа строки и ключа столбца:

@Test
public void givenTable_whenRemove_returnsSuccessfully() {
    Table universityCourseSeatTable
      = HashBasedTable.create();
    universityCourseSeatTable.put("Mumbai", "Chemical", 120);
    universityCourseSeatTable.put("Mumbai", "IT", 60);

    int seatCount 
      = universityCourseSeatTable.remove("Mumbai", "IT");

    assertThat(seatCount).isEqualTo(60);
    assertThat(universityCourseSeatTable.remove("Mumbai", "IT")).
      isEqualTo(null);
}

4.4. Строка Ключ к карте значения ячейки

Мы можем получить Карта представление ключа в качестве строки и значения в качестве CellValue предоставляя ключ столбца:

@Test
public void givenTable_whenColumn_returnsSuccessfully() {
    Table universityCourseSeatTable 
      = HashBasedTable.create();
    universityCourseSeatTable.put("Mumbai", "Chemical", 120);
    universityCourseSeatTable.put("Mumbai", "IT", 60);
    universityCourseSeatTable.put("Harvard", "Electrical", 60);
    universityCourseSeatTable.put("Harvard", "IT", 120);

    Map universitySeatMap 
      = universityCourseSeatTable.column("IT");

    assertThat(universitySeatMap).hasSize(2);
    assertThat(universitySeatMap.get("Mumbai")).isEqualTo(60);
    assertThat(universitySeatMap.get("Harvard")).isEqualTo(120);
}

4.5. Картографное представление таблицы

Мы можем получить Карта<УниверситетНайство, Карта<КурсыОфицировано, SeatAvailable>> представление с помощью columnMap метод:

@Test
public void givenTable_whenColumnMap_returnsSuccessfully() {
    Table universityCourseSeatTable 
      = HashBasedTable.create();
    universityCourseSeatTable.put("Mumbai", "Chemical", 120);
    universityCourseSeatTable.put("Mumbai", "IT", 60);
    universityCourseSeatTable.put("Harvard", "Electrical", 60);
    universityCourseSeatTable.put("Harvard", "IT", 120);

    Map> courseKeyUniversitySeatMap 
      = universityCourseSeatTable.columnMap();

    assertThat(courseKeyUniversitySeatMap).hasSize(3);
    assertThat(courseKeyUniversitySeatMap.get("IT")).hasSize(2);
    assertThat(courseKeyUniversitySeatMap.get("Electrical")).hasSize(1);
    assertThat(courseKeyUniversitySeatMap.get("Chemical")).hasSize(1);
}

4.6. Колонка Ключ к карте значения ячейки

Мы можем получить Карта представление ключа в качестве столбца и значения в качестве CellValue предоставляя ключ строки:

@Test
public void givenTable_whenRow_returnsSuccessfully() {
    Table universityCourseSeatTable 
      = HashBasedTable.create();
    universityCourseSeatTable.put("Mumbai", "Chemical", 120);
    universityCourseSeatTable.put("Mumbai", "IT", 60);
    universityCourseSeatTable.put("Harvard", "Electrical", 60);
    universityCourseSeatTable.put("Harvard", "IT", 120);

    Map courseSeatMap 
      = universityCourseSeatTable.row("Mumbai");

    assertThat(courseSeatMap).hasSize(2);
    assertThat(courseSeatMap.get("IT")).isEqualTo(60);
    assertThat(courseSeatMap.get("Chemical")).isEqualTo(120);
}

4.7. Получить отчетливый ключ строки

Мы можем получить все ключи строки из таблицы, используя rowKeySet метод:

@Test
public void givenTable_whenRowKeySet_returnsSuccessfully() {
    Table universityCourseSeatTable
      = HashBasedTable.create();
    universityCourseSeatTable.put("Mumbai", "Chemical", 120);
    universityCourseSeatTable.put("Mumbai", "IT", 60);
    universityCourseSeatTable.put("Harvard", "Electrical", 60);
    universityCourseSeatTable.put("Harvard", "IT", 120);

    Set universitySet = universityCourseSeatTable.rowKeySet();

    assertThat(universitySet).hasSize(2);
}

4.8. Получить отчетливый ключ колонки

Мы можем получить все клавиши столбца из таблицы, используя колонкаKeySet метод:

@Test
public void givenTable_whenColKeySet_returnsSuccessfully() {
    Table universityCourseSeatTable
      = HashBasedTable.create();
    universityCourseSeatTable.put("Mumbai", "Chemical", 120);
    universityCourseSeatTable.put("Mumbai", "IT", 60);
    universityCourseSeatTable.put("Harvard", "Electrical", 60);
    universityCourseSeatTable.put("Harvard", "IT", 120);

    Set courseSet = universityCourseSeatTable.columnKeySet();

    assertThat(courseSet).hasSize(3);
}

5. Заключение

В этом учебнике мы проиллюстрировали методы Таблица класса из библиотеки Гуавы. Таблица класс предоставляет коллекцию, представляющую таблицу, похожую на структуру, содержащую строки, столбцы и связанные с ними значения ячеев.

Код, относящийся к вышеуказанным примерам, можно найти в проект GitHub – это Maven основе проекта, поэтому она должна быть легко импортировать и работать как есть.