1.概述

在本教程中,我们将展示如何使用谷歌番石榴表格接口及其多个实现。

郭瓦表格是表示包含行、列和相关单元格值的类似于表的结构的集合。行和列充当一个有序的键对。

2.谷歌番石榴的表格

让我们看看如何使用表格班级。

2.1。Maven的依赖

让我们开始添加Google的Guava库依赖pom.xml:

<依赖>  com.google.guava   GUAVA   29.0-JRE  

可以检查最新版本的依赖项这里

2.2。雷竞技app官网网站关于

如果我们代表番石榴表格使用收藏品如果在core Java中存在,那么结构将是一个行映射,其中每行包含一个列映射,其中包含关联的单元格值。

表格表示一种特殊映射,其中可以组合指定两个键以引用单个值。

它类似于创建一个地图的地图,例如,Map < UniversityName,地图< CoursesOffered, SeatAvailable > >表格也是呈现《战舰》游戏面板的完美方式。

3.创建

您可以创建一个实例表格以多种方式:

  • 使用创造方法。hashbasedtable.它使用linkedhashmap.在内部:
     upiversitycourseseattable = hashbasedtable.create();
  • 如果我们需要表格需要通过自然排序或通过提供比较器来订购其行键和列键,您可以创建一个实例表格使用创造调用的类中的treebasedtable.,它使用TreeMap在内部:
    Table universityCourseSeatTable = TreeBasedTable.create();
  • 如果我们事先知道行键和列键并且表大小是固定的,请使用创造方法。ArrayTable:
    list 大学rowtable = lists.newarraylist(“孟买”,“哈佛”);list  coursecolumntables = lists.newarraylist(“化学”,“它”,“电气”);表 upizoilecourseseattable = sraytable.create(大学新闻,Coursecolumntables);
  • 的不可变实例表格其内部数据永远不会改变,使用ImmutableTable类(创建遵循构建器模式):
    Table universityCourseSeatTable = ImmutableTable。 builder() .put("Mumbai", "Chemical", 120).build();

4.使用

让我们从一个简单的例子开始表格

4.1。检索

如果我们知道行键和列键,那么我们可以得到与行键和列键相关联的值:

@test public viod giventable_whenget_returnssuccesspullus(){ta​​ble 大学courseseattable = hashbasedtable.create();大学古晋,“孟买”,“化学”,120);大学楼内娱乐。“孟买”,“它”,60);大学楼内娱乐。“,”哈佛“,”电气“,60);大学楼内娱乐.put(“哈佛”,“它”,120);int seatcount = upionitycourseseattable.get(“孟买”,“它”);Integer seatcountfornoentry = Universitycourseseattable.get(“牛津”,“它”);为了(seatCount) .isEqualTo (60);assertthat(seatcountfornoentry).isequalto(null);}

4.2。检查条目

我们可以检查a中是否有条目表格基于:

  • 行键
  • 列键
  • 行键和列键
  • 价值

让我们看看如何检查是否存在条目:

@Test public void givenTable_whenContains_returnsSuccessfully() {Table universityCourseSeatTable = HashBasedTable.create();大学古晋,“孟买”,“化学”,120);大学楼内娱乐。“孟买”,“它”,60);大学楼内娱乐。“,”哈佛“,”电气“,60);大学楼内娱乐.put(“哈佛”,“它”,120);boolean entryIsPresent = universitycoursesettable。包含(“孟买”,“它”);boolean courseIsPresent = universitycoursesetable . containscolumn(“IT”);boolean universityIsPresent = universitycoursesetable . containsrow("孟买");boolean seatcountipresent = universitycoursesetable . containsvalue (60);为了(entryIsPresent) .isEqualTo(真正的); assertThat(courseIsPresent).isEqualTo(true); assertThat(universityIsPresent).isEqualTo(true); assertThat(seatCountIsPresent).isEqualTo(true); }

4.3。移动

我们可以从中删除条目表格通过提供行键和列键:

@Test public void giventable_whenremove_returns () {Table universityCourseSeatTable = HashBasedTable.create();大学古晋,“孟买”,“化学”,120);大学楼内娱乐。“孟买”,“它”,60);int seatCount = universitycoursesettable。删除(“孟买”,“它”);为了(seatCount) .isEqualTo (60);为了(universityCourseSeatTable。删除(“孟买”,“它”))。isEqualTo(空);}

4.4。行键到单元格值映射

我们可以得到一个地图用键作为一行的表示和值CellValue通过提供列键:

@test public viod giventable_whencolumn_returnssuccessulus(){ta​​ble  upileisedcourseseattable = hashbasedtable.create();大学古晋,“孟买”,“化学”,120);大学楼内娱乐。“孟买”,“它”,60);大学楼内娱乐。“,”哈佛“,”电气“,60);大学楼内娱乐.put(“哈佛”,“它”,120);map  upizesseatmap = UniversityCourseseattable.column(“它”);Assertthat(UniversitySeatmap).hassize(2);Assertthat(UniversitionSeatmap.get(“孟买”))。isequalto(60);Assertthat(UniversitySeatmap.get(“哈佛”))。isequalto(120);}

4.5。地图表示a表格

我们可以得到一个Map < UniversityName,地图< CoursesOffered, SeatAvailable > >使用columnMap方法:

@test public vioid giventable_whencolumnmap_returnssccesspullus(){ta​​ble  upileisedcourseseattable = hashbasedtable.create();大学古晋,“孟买”,“化学”,120);大学楼内娱乐。“孟买”,“它”,60);大学楼内娱乐。“,”哈佛“,”电气“,60);大学楼内娱乐.put(“哈佛”,“它”,120);地图> proundkeyUniversitySeatMap = UniversityCourseseattable.columnMap();Assertthat(课程大胆症eatmap).hassize(3);assertthat(课程unleteyuniversityseatmap.get(“它”))。哈西(2);assertthat(课程oeruniversityseatmap.get(“电气”))。Hassize(1);assertthat(课程unletheruniversityseatmap.get(“化学”))。干扰(1); }

4.6。列键到单元格值映射

我们可以得到一个地图键表示为列,值表示为CellValue通过提供行密钥:

@Test public void giventable_whenrow_returns () {Table universityCourseSeatTable = HashBasedTable.create();大学古晋,“孟买”,“化学”,120);大学楼内娱乐。“孟买”,“它”,60);大学楼内娱乐。“,”哈佛“,”电气“,60);大学楼内娱乐.put(“哈佛”,“它”,120);Map courseSeatMap = universitycoursesetable .row("孟买");为了(courseSeatMap) .hasSize (2);为了(courseSeatMap.get(“它”).isEqualTo (60);为了(courseSeatMap.get(“化学”)).isEqualTo (120);}

4.7。获取独特的行键

属性从表中获取所有行键rowKeySet方法:

@test public vioid giventable_whenrowkeyset_returnsssuccessules(){ta​​ble  upizoilecourseseattable = hashbasedtable.create();大学古晋,“孟买”,“化学”,120);大学楼内娱乐。“孟买”,“它”,60);大学楼内娱乐。“,”哈佛“,”电气“,60);大学楼内娱乐.put(“哈佛”,“它”,120);set 大学集= upileentscourseseattable.rowkeyset();assertthat(大学).hassize(2);}

4.8。获取独特的列键

我们可以使用从表中获取所有列键collumkeyset.方法:

@Test public void giventable_whencolkeyset_returnnssuccessfully () {Table universityCourseSeatTable = HashBasedTable.create();大学古晋,“孟买”,“化学”,120);大学楼内娱乐。“孟买”,“它”,60);大学楼内娱乐。“,”哈佛“,”电气“,60);大学楼内娱乐.put(“哈佛”,“它”,120);Set courseSet = universitycoursesetable . columnkeyset ();为了(courseSet) .hasSize (3);}

5.结论

在本教程中,我们演示了表格来自番石榴库的课程。这表格类提供一个表示包含行、列和相关单元格值的类似于表的结构的集合。

属于上述例子的代码可以在GitHub项目-这是一个基于maven的项目,所以它应该很容易导入和运行。

通用的底部

开始使用Spring 5和Spring Boot 2,通过学习的春天课程:

>>查看课程
评论在本文上关闭!