如果我按顺序有一个包含从A到Z的莫尔斯代码字母的ArrayList,并且按顺序包含从A到Z的常规字母表的ArrayList,那么获取用户输入并通过使用这些来转换它的最佳方式是什么两个ArrayLists?
答案 0 :(得分:2)
创建Map<MorseCode, Character>
,迭代用户输入的莫尔斯码,并为每个莫尔斯码获取地图中的相关角色。如果要转换到其他方向,请使用Map<Character, MorseCode>
。
答案 1 :(得分:1)
为什么不使用带有morseCode的HashMap<String,String>
作为密钥,将翻译作为值?
然后你可以使用`map.get(key)?并且它直接返回翻译而没有巨大的性能成本。
访问Map
的成本是O(1)。找到List
的翻译有O(n)。
答案 2 :(得分:1)
地图在这里是最佳选择,但如果您必须使用列表,则可以使用indexOf(E element)
方法。如果列表不包含元素,它将返回元素的索引或-1。然后,您可以使用get(int index)
在指定位置获取元素。
所以类似的东西应该为letter-&gt; morseCode
做诀窍int index = letterList.indexOf(yourCharacter);
if (index >= 0)
morse = morseCodeList.get(index);
或反转它以找到莫尔斯 - >字母。