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