java实现这道题,数据结构算法怎么高效怎么来

发布于 2022-09-12 01:23:34 字数 1197 浏览 14 评论 0

数据一:
id=1000001 a="aValue" b="bValue" c="cValue"
id=1000002 e="eValue" f="fValue" g="gValue" h="hvalue"

数据二:
id=1000001 a="A" b="B" c="C"
id=1000002 e="E" f="F" g="G" h="H"

结果:
id=1000001 A="aValue" B="bValue" C="cValue"
id=1000002 E="eValue" F="fValue" G="gValue" H="hvalue"

拿数据二中的value值替换成数值一的key值
数据一数据二根据id可以对应

----------------- 补充数据格式 -----------
都是List里面可以能有很多数据
数据一:
[
    {
        "id": "1000001",
        "a": "aValue",
        "b": "bValue",
        "c": "cValue"
    },
    {
        "id": "1000002",
        "e": "eValue",
        "f": "fValue",
        "g": "gValue",
        "h": "hvalue"
    }
]
---------------------------------------
数据二:
[
    {
        "id": "1000001",
        "a": "A",
        "b": "B",
        "c": "C"
    },
    {
        "id": "1000002",
        "e": "E",
        "f": "F",
        "g": "G",
        "h": "H"
    }
]
---------------------------------------
结果:
[
    {
        "id": "1000001",
        "A": "aValue",
        "B": "bValue",
        "C": "cValue"
    },
    {
        "id": "1000002",
        "E": "eValue",
        "F": "fValue",
        "G": "gValue",
        "H": "hvalue"
    }
]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千寻… 2022-09-19 01:23:34

数据一转换成Map: {id -> {key, value}},然后遍历数据二

夜光 2022-09-19 01:23:34

全部用 json 包起来的,你早给出来啊,再让我想想吧。


以下为原回答:

你得先说下你的数据一和数据二分别是用什么数据结构存储的。我猜测可能是下面两个:

  1. 都是数组存储,id 作为数组下标。这样的处理会很简单,O(n) 遍历一次就可以,直接根据下标去取另一个数据集的 value。
  2. 都是 map 存储,id 作为 key,后面的值作为 value。

    1. 数据量万级。就用上面 @iknight 的回答就可以,暴力简单,复杂度 log(n) * log(n)
    2. 如果百万级甚至更多。我建议先【遍历】数据二,将遍历到的地址保存在一个链表或者就一个数组中,然后【遍历】数据一。数据集一 走一步,链表就 next 一下。复杂度 log(n),最简单的空间换时间。(注:这两个【遍历】应该调用同一个接口,不出意外应该是中序遍历,会以 key 的降序或升序输出遍历结果。)

就你当前的这种需求的话,数据一和数据二的最佳存储结构应该是 hashtable,这样问题就简单很多。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文