【问题标题】:Add two elements in the same list and create attributes to link the two elements在同一列表中添加两个元素并创建属性以链接这两个元素
【发布时间】:2022-12-04 20:45:43
【问题描述】:

我用 Java 编写了一个网关,允许接收包含以下信息的帧:ETQ | RGS | B | MESSAGE | ETX | CHECKSUM。我想解析框架以获取 RGS 和消息,我对这部分进行了编码,但我想将这两个元素添加到具有属性的同一个列表中。这可能吗?

这是我的代码:

static List<String> msgRGSLCR = new ArrayList<String>();

byte[] rgs = new byte[0];

for (int i = 0; i < buffer.length; i++) {
    for (int y = 0; y < buffer.length; y++) {
        if (buffer[i] == 5) {
            if (buffer[y] == 0) {
                rgs = Arrays.copyOfRange(buffer, i + 1, y);
                i++;
            }
        }
    }
}

byte[] lcr = new byte[0];

for (int i = 0; i < buffer.length; i++) {
    for (int y = 0; y < buffer.length; y++) {
        if (buffer[i] == 0) {
            if (buffer[y] == 3) {
                lcr = Arrays.copyOfRange(buffer, i + 1, y);
                i++;
            }
        }
    }
}

【问题讨论】:

  • 您能否提供一个您使用的数据示例?在这种情况下,请编辑您的问题以添加它。

标签: java spring-boot sockets


【解决方案1】:

可能 HashMap 就是您要查找的内容。

var msgToRgs = new HashMap<byte[], byte[]>();
// do here you code of constructing rgs and lcr byte arrays
msgToRgs.put(rgs, lcr);

【讨论】:

  • 谢谢您的帮助。问题是我需要重复项(在我的地图中多次使用相同的键)是否可能?
  • @Gojoooo7 通常,不,任何标准地图都不能有重复的键。但是,您可以为地图使用另一种通用类型。例如,尝试使用HashMap&lt;byte[], List&lt;byte[]&gt;&gt;。在这种情况下,您可以通过一个键将多个值存储在一个列表中。还要考虑为框架中的声明创建类。作为示例:类 Claim 有两个字段:byte[] payloadClaimType type,其中 ClaimType 是类型的枚举:ETQ | RGS |乙 |留言 |交易平台 |校验和。附言在任何地图中为键使用自定义类时,不要忘记覆盖 equalshashCode
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
  • 2023-03-27
  • 2016-04-29
  • 2020-08-12
  • 1970-01-01
相关资源
最近更新 更多