[英]Why does this not sort the list?
我可以通过实际上创建一个新的ArrayList来修复它,每个元素都是一个char数组,我以为我拥有每个元素char数组的引用,并对其进行排序并将其添加到新列表中,每个元素都是一个排序的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());
}
这里的问题是在行中排序的数组
Arrays.sort(word.toCharArray());
消失。 该参考未保存,因此在您致电时
sortedWords.add(word.toCharArray());
这是一个新数组。 你需要:
char[] sortedWord = word.toCharArray();
Arrays.sort(sortedWord);
sortedWords.add(sortedWord);
请看一下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[]
。
您尚未存储返回的数组,因此排序后的排序结果已丢失。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.