You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中构造嵌套Tuple2以存储图顶点的三个属性

构造嵌套Tuple2存储顶点的id、权重和标签

没问题,我来帮你搞定这个嵌套Tuple2的构造需求!你原来的代码只存了id和weight,现在要加入label,只需要把外层Tuple2的第二个元素换成另一个Tuple2,用来同时存放weight和label就行。

直接可用的代码示例

这里假设你的label是字符串类型(如果是其他类型,直接替换成对应类型即可):

import com.google.common.collect.Lists;
import scala.Tuple2;

List<Tuple2<Long, Tuple2<Integer, String>>> vertices = Lists.newArrayList(
    new Tuple2<>(1L, new Tuple2<>(0, "Vertex A")),
    new Tuple2<>(2L, new Tuple2<>(Integer.MAX_VALUE, "Vertex B")),
    new Tuple2<>(3L, new Tuple2<>(Integer.MAX_VALUE, "Vertex C")),
    new Tuple2<>(4L, new Tuple2<>(Integer.MAX_VALUE, "Vertex D"))
);

代码说明

  • 外层Tuple2的第一个元素是顶点的id(这里用Long类型,比原代码的Object更具体,避免后续强制转换)
  • 外层Tuple2的第二个元素是一个嵌套的Tuple2:
    • 嵌套Tuple2的第一个元素是weight(保持你原有的Integer类型)
    • 嵌套Tuple2的第二个元素是label(这里用String示例,你可以根据实际需求换成Enum、自定义类等任意类型)

如何访问这些值

如果要取出某个顶点的三个属性,直接通过_1()和_2()方法逐层获取即可,因为用了具体类型,不需要强制转换,更安全:

// 获取第一个顶点的属性
Tuple2<Long, Tuple2<Integer, String>> firstVertex = vertices.get(0);
Long vertexId = firstVertex._1();
Integer vertexWeight = firstVertex._2()._1();
String vertexLabel = firstVertex._2()._2();

如果你必须保留Object类型(不推荐)

如果因为某些原因需要保持原代码的Object类型,也可以这样写,但后续访问需要强制转换:

List<Tuple2<Object, Tuple2<Integer, Object>>> vertices = Lists.newArrayList(
    new Tuple2<>(1L, new Tuple2<>(0, "Vertex A")),
    new Tuple2<>(2L, new Tuple2<>(Integer.MAX_VALUE, 3)), // 这里label用Integer示例
    new Tuple2<>(3L, new Tuple2<>(Integer.MAX_VALUE, true)), // label用Boolean示例
    new Tuple2<>(4L, new Tuple2<>(Integer.MAX_VALUE, "Vertex D"))
);

访问时:

Tuple2<Object, Tuple2<Integer, Object>> vertex = vertices.get(1);
Long id = (Long) vertex._1();
Integer weight = vertex._2()._1();
Integer label = (Integer) vertex._2()._2(); // 这里根据实际类型强制转换

内容的提问来源于stack exchange,提问作者onr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:29:28