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() { TableuniversityCourseSeatTable = 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() { TableuniversityCourseSeatTable = 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() { TableuniversityCourseSeatTable = 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() { TableuniversityCourseSeatTable = 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() { TableuniversityCourseSeatTable = 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() { TableuniversityCourseSeatTable = 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() { TableuniversityCourseSeatTable = 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() { TableuniversityCourseSeatTable = 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 основе проекта, поэтому она должна быть легко импортировать и работать как есть.