我想將我在Java中編寫的算法轉換爲Scala,但是我在使用Java中的containsValue()
方法時遇到了問題。我想要做類似if (hashMap.containsValue(value))
的事情,但我查看了scala文檔,只找到了一個包含(關鍵)方法。 如何實現或使用hashmap.containsValue(值)Scala中我還是新來斯卡拉,但這裏是我迄今爲止在斯卡拉:Scala HashMap containsValue方法
def retString(s: String)
{
val map = new mutable.HashMap[Int, Char]
for (c <- s.toCharArray)
{
//if(!map.containsValue(c)) goes here
}
}
` 完整的算法我想轉換是removeDuplicates我在Java中寫道:
public static String removeDuplicates(char[] s)
{
HashMap<Integer, Character> hashMap = new HashMap<Integer, Character>();
int current = 0;
int last = 0;
for(; current < s.length; current++)
{
if (!(hashMap.containsValue(s[current])))
{
s[last++] = s[current];
hashMap.put(current, s[current]);
}
}
s[last] = '\0';
//iterate over the keys and find the values
String result = "";
for (Integer key: hashMap.keySet()) {
result += hashMap.get(key);
}
return result;
}
嘿,你爲什麼不加入你想轉換的java算法?將幫助我們理解你在做什麼? – Mick
好吧,編輯它 – John61590
通常,對於這種'removeDuplicates'算法,您可以創建一個* set *您嘗試去重複的東西。 containsValue方法是O(n),因此您的算法是O(n^2)。你可以在O(n log(n))中用一個集合來完成它(即使你還保存了一個索引映射到值來保持排序)。 –