我有一个名为String
的{{1}}数组(为了论证,我们只能说它包含一个故事中的单词)。我想将此数组传递给一个方法,该方法将按字母顺序对它们进行排序并分析单词。我在SO上看了很多,很多人都建议这个场景使用myArray
。所以我在我的方法中使用了这一行,传入了java.util.Arrays.sort(myArray)
,并对它进行了计算等等。
然而,最近我注意到这将永久排序myArray
也就是说,在我退出方法之后,数组仍然会被排序。有没有办法让我只在方法范围内对数组进行排序?
示例代码:
myArray.
答案 0 :(得分:8)
String temp[] = java.util.Arrays.copyOf(doc1,doc1.length);
java.util.Arrays.sort(temp);
答案 1 :(得分:4)
制作数组副本,对该副本进行排序并使用相同的内容。
String [] sortedDocuments = new Sting[document.length];
Systems.arraycopy(document, 0, sortedDocuments , 0, document.length);
Arrays.sort(sortedDocuments );
或
String [] sortedDocuments = Arrays.copyOf(document, document.length);
Arrays.sort(sortedDocuments );
在您的方法中使用sortedDocuments
数组。原始数组document
保持不变。
答案 2 :(得分:1)
如果您只想计算唯一单词,请更好地使用以下代码。没有必要对数组进行排序以计算唯一元素。
public int countUniqueElements(Object[] array) {
return new HashSet(Arrays.asList(array)).size();
}