【问题标题】:Data Structure choices based on requirements基于需求的数据结构选择
【发布时间】:2019-02-26 23:05:55
【问题描述】:

我对编程尤其是 java 完全陌生,我正在尝试确定在特定情况下使用哪种数据结构。由于我一般不熟悉数据结构,因此我不知道什么结构做什么以及每个结构的限制是什么。

所以我有一个 CSV 文件,上面有一堆项目,比如说字符和匹配的数字。所以我的列表是这样的:

A,1,B,2,B,3,C,4,D,5,E,6,E,7,E,8,E,9,F,10……等。

我需要能够读进去,然后:

1) 只显示按字母或数字排序的字母或数字

2) 搜索以查看元素是否包含在任一列表中。

3) 搜索以查看匹配列表中是否包含元素对(例如 A - 1 或 B-10)。

把它想象成一个有两列的 Excel 电子表格。我需要能够在保持关系的同时按任一列进行排序,并且我需要能够执行 IF 列 A = 某个变量并且相应的列 B 包含一些其他变量,然后执行此操作。

我还需要能够在任何位置将一对插入到原始列表中。因此,将 A 插入列表 1 并将 10 插入列表 2,但要确保它们保留关系 A-10。

我希望这是有道理的,感谢您的帮助!我正在购买一本 Java 中的数据结构书来完成并尝试在我们当地的大学注册课程,但它只在每年春天提供......

【问题讨论】:

    标签: java data-structures


    【解决方案1】:

    您可以使用两个已排序的Maps,例如TreeMap。 一种是将字符映射到数字(Map<Character,Number> 或类似的东西)。另一个将执行反向映射 (Map<Number, Character>)

    让我们看看您的要求:

    1) 仅显示按字母顺序排序的字母或数字 或数字

    只需遍历其中一张地图。迭代将被排序。

    2) 搜索一个元素是否包含在任一列表中。

    查看对应的地图即可。找号码?检查键为数字的Map

    3) 搜索以查看元素对(例如 A - 1 或 B-10)是否为 包含在匹配列表中。

    只需 get() 来自字符映射的 A 的值,并检查该值是否为 10。如果是这样,那么 A-10 存在。如果没有值,或者值不是 10,则 A-10 不存在。

    添加或删除元素时,您需要注意修改两个地图以使它们保持同步。

    【讨论】:

    • 谢谢!如何从 Character Map 中获取密钥?
    • 谢谢!我明白了(大部分情况下)。我将值加载到两个 TreeMap 中,然后我可以将它们转换为 Collections 分配一个迭代器,然后迭代它们以显示(尽管这不是按字母顺序排序,而是按分配的键排序)。
    猜你喜欢
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多