我可以通过实际上创建一个新的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());
              }

===============>>#1 票数:3 已采纳

这里的问题是在行中排序的数组

Arrays.sort(word.toCharArray());

消失。 该参考未保存,因此在您致电时

sortedWords.add(word.toCharArray());

这是一个新数组。 你需要:

char[] sortedWord = word.toCharArray();
Arrays.sort(sortedWord);
sortedWords.add(sortedWord);

===============>>#2 票数: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[]

您尚未存储返回的数组,因此排序后的排序结果已丢失。

  ask by ShahrukhKhan translate from so

未解决问题?本站智能推荐: