我学校的compsci网站上的测试仪不工作,所以我目前无法测试我的代码。代码中有两个领域我有点困惑,并且非常感谢一些输入。所以我写的代码如下。Java哈希表映射问题。
public int countPairs(String[] words) {
Set <String> pairs = new HashSet<String>();
int noOfPairs= 0;
for (String word:words){
Map noOfOccurencesOfEachLetter= getMap(word);
ArrayList<Integer> valuesFromFirstWord = new ArrayList<Integer>(noOfOccurencesOfEachLetter.values());
Collections.sort(valuesFromFirstWord);
java.util.List<String> list = new ArrayList<String>(Arrays.asList(words));
list.remove(word);
String[] oneLessWord = list.toArray(new String[words.length-1]);
for(String secondWord:oneLessWord){
Map secondNoOfOccurencesOfEachLetter = getMap(secondWord);
ArrayList<Integer> valuesFromSecondWord = new ArrayList<Integer>(secondNoOfOccurencesOfEachLetter.values());
Collections.sort(valuesFromSecondWord);
if (valuesFromFirstWord.equals(valuesFromSecondWord)){
noOfPairs+=1;
}
}
}
return noOfPairs/2;
}
此代码旨在给我数组(单词)中存在的单词的异构对数。我写了一个名为getMap
的方法,其外部基本上创建一个映射,其中键是包含在单词中的字母表中的字母,并且值是该单词中该字母的出现次数。
现在我的问题是:
1)该行是否为有效的Java代码?
ArrayList<Integer> valuesFromFirstWord = new ArrayList<Integer>
(noOfOccurencesOfEachLetter.values());
或者我是否需要通过一些循环使用来创建我的字典中包含的值列表?
2)为了避免在第二个for循环中包含相同的单词,我创建了一个名为oneLessWord的新数组,其中包含除初始for循环所经过的单词之外的所有单词元素。这三行代码是否这样做?
java.util.List<String> list = new ArrayList<String>(Arrays.asList(words));
list.remove(word);
String[] oneLessWord = list.toArray(new String[words.length-1]);
我将不胜感激任何反馈。
非常感谢, 朱奈德
http://ideone.com/ –
“我学校compsci网站上的测试程序无法正常工作,所以我目前无法测试我的代码”所以,它不是编译器的替代品。 – Raedwald
这个问题似乎是无关紧要的,因为OP没有热情或专业知识来检查他们的代码是否编译。 – Raedwald