根据需求选择数据结构

时间:2019-02-26 14:02:24

标签: java data-structures

我对编程特别是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编写的数据结构书以进行学习,并试图在我们当地的大学报名参加该课程,但该课程每年春季才提供...

1 个答案:

答案 0 :(得分:0)

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

让我们看看您的要求:

  

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

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

  

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

只需检查相应的地图即可。寻找号码?检查其密钥为数字的Map

  

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

仅从字符映射表中get()的值A,然后检查该值是否为10。如果是这样,则存在A-10。如果没有值,或者该值不为10,则A-10不存在。

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