我对编程特别是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编写的数据结构书以进行学习,并试图在我们当地的大学报名参加该课程,但该课程每年春季才提供...
答案 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不存在。
添加或删除元素时,您需要注意修改两个地图以使其保持同步。