热点:

    Java标准库集合缺失问题

      [   原创  ]   作者:
    收藏文章 暂无评论

    Java标准库是否缺少某种集合类型?

    1、 Guava是一套由谷歌为自身Java项目开发的工具库,主要聚焦于集合操作、输入输出处理及数学运算,并与Apache Commons库有一定功能重叠。该库可视为对Java Collections API中数据结构的有效补充和扩展,提升了开发效率与代码简洁性。

    2、 Guava引入了名为Multiset的集合类型,允许集合中存在多个相同元素。该类提供了统计某一元素出现次数的方法,并支持将Multiset转换为普通集合,便于在不同场景下灵活使用,增强了集合操作的便利性与功能性。

    3、 类似于Collections库,提供了多种多集实现方式,包括HashMultiset、TreeMultiset以及ConcurrentHashMultiset,适用于不同场景下的集合操作需求。

    4、 下图展示了当前应用的多重集合。

    5、 这能够记录每个元素的出现总次数。将多重集合视为元素与对应计数之间的映射关系,有助于理解其原理。尽管可以通过映射结构实现类似功能,但Guava的实现更为强大:其size()方法返回的是所有元素的总数,而基于映射的实现仅返回不同元素的种类数。此外,映射的迭代器每种元素只遍历一次,无法反映实际重复数量,而Guava能更准确地体现多集特性。

    6、 多目标映射允许多个键存在于同一映射中,类似多集映射的特性。

    7、 当需要为键关联多个值时,通常采用键映射到值列表或集合的方式。添加值时,常会遇到类似如下伪代码的处理逻辑。

    8、 这种方式较为脆弱且易出错,还需保证线程安全。使用Guava的Multimap可简化处理,更可靠高效。

    9、 下图展示了其使用实例。

    10、 get方法返回的是映射值类型的一个集合,而非单个实例对象。

    11、 multiap与Java的Map接口存在几处差异:其get方法永不返回null,若键不存在则返回空集合;此外,size方法统计的是所有条目总数,而非仅键的数量。这些设计使得multiap在处理多值映射时更为直观和安全。

    12、 类似于Multiset,可通过asMap方法将multiap转换为Java映射,结果是一个键与值集合的映射,即Map>,便于按键访问对应的多个值。

    13、 Guava 提供的另一种映射类型是 BiMap 接口,它支持双向查找功能:既能通过键查找值,也能通过值反向查找对应的键。在 Java 中使用普通 Map 实现类似功能较为复杂,通常需要维护两个独立的映射结构,并严格保证任意值在整个映射中唯一,避免出现重复值导致的映射冲突问题。

    14、 下图展示股票代码与对应公司名称的映射关系示例。

    15、 inverse 引用了原始的 BiMap,因此在原始映射中新增的内容会同步到反向映射中,同样,反向映射的改动也会反映到原始映射里。

    soft.zol.com.cn true https://soft.zol.com.cn/1159/11598989.html report 2057 Java标准库是否缺少某种集合类型? 1、 Guava是一套由谷歌为自身Java项目开发的工具库,主要聚焦于集合操作、输入输出处理及数学运算,并与Apache Commons库有一定功能重叠。该库可视为对Java Collections API中数据结构的有效补充和扩展,提升了开发效率与代码简洁性。...
    不喜欢(0) 点个赞(0)
    随时随地资讯查报价 就上ZOL手机客户端,点击或扫描二维码下载
    立即下载

    Almeza MultiSet

    更新时间:2009年07月02日

    用户评分:0 | 0人点评

    软件类型:共享软件

    软件语言:英文

    Almeza MultiSet
    • 更新时间:2009年07月02日
    • 软件大小:5.6MB
    • 软件分类:系统优化
    • 语言种类:英文
    • 软件评级:0 人点评