我能够通过实际创建一个新的ArrayList来修复它,每个元素都是一个char数组,我以为我有每个元素char数组的引用,并通过对它进行排序并将其添加到一个新的list,每个元素都是一个排序的char数组。为了提高我对概念的理解,请说清楚。感谢
假设我有一个单词列表,=“Stack”,“Mack”,在一个名为单词的ArrayList中,我想按字母顺序对单词的每个元素进行排序,即sortedWords的元素0应该是ackSt等。我知道如何要做到这一点,但我对于如何通过指向它而无法做到这一点感到惊讶。
ArrayList<ArrayList<String>> groupedAnagrams = new ArrayList<>();
ArrayList<char[]> sortedWords = new ArrayList<>();
for(String word : words){
//char[] sortedWord = word.toCharArray();
Arrays.sort(word.toCharArray());
sortedWords.add(word.toCharArray());
}
答案 0 :(得分:3)
这里的问题是在行
中排序的数组Arrays.sort(word.toCharArray());
消失。参考文件未保存,因此当您致电
时sortedWords.add(word.toCharArray());
这是一个新阵列。你需要:
char[] sortedWord = word.toCharArray();
Arrays.sort(sortedWord);
sortedWords.add(sortedWord);
答案 1 :(得分:1)
请查看String#toCharArray()的源代码:
/**
* Converts this string to a new character array.
*
* @return a newly allocated character array whose length is the length
* of this string and whose contents are initialized to contain
* the character sequence represented by this string.
*/
public char[] toCharArray() {
char result[] = new char[count];
getChars(0, count, result, 0);
return result;
}
每次它都会返回一个新的char[]
。
您还没有存储返回的数组,因此排序后排序结果已丢失。