由於問題說我有這個問題。我知道它爲什麼在開始時,因爲它是1和0,所以它在排序之前甚至是9。但是,它可以按照sort()
列表的正確順序排列嗎?爲什麼在排序後的ArrayList開始10)
回答
您需要更改列表以包含數字(例如,Integer
s或Double
s)而不是字符串。
也許他需要有字符串。如果是這樣,他應該使用自然的分類 – 2010-08-31 17:36:17
如果你字符串進行排序而不是數字,這個代碼可以幫助你理解上的差異:
ArrayList stringList = new ArrayList();
stringList.add("9");
stringList.add("10");
Collections.sort(stringList);
Assert.assertEquals("10", stringList.get(0));
ArrayList integerList = new ArrayList();
integerList.add(9);
integerList.add(10);
Collections.sort(integerList);
Assert.assertEquals(9, integerList.get(0));
使用JUnit斷言斷言。
正如其他人所說,如果你打算分類實際的數字不存儲他們的字符串。如果您確實想自然地對包含數字的字符串進行排序,我更喜歡使用Apache Commons Collection Utils ComparatorUtils.NATURAL_COMPARATOR,不過還有其他選項具有不同的可配置性和功能。
Java本身不支持按照您需要的方式自然排序String
對象。關於此請參見Java Trail。主要原因是由於許多不同的語言等原因,這樣做太複雜了。因此,以前有關將List<String>
更改爲List<Integer>
或List<Double>
的答案可能是一個更好的主意。
但是,Stackoverflow上的this question可能對您有所幫助。
如果列表中必須的String
S表示某種原因(似乎不太可能對我來說),(使用Guava)一個選項是:
List<String> numbers = ...;
Collections.sort(numbers, Ordering.natural().onResultOf(
new Function<String, Integer>() {
public Integer apply(String from) {
return Integer.valueOf(from);
}
}));
此基礎上每個整數值排序字符串列表字符串表示。如果不是每個字符串都可以被解析爲整數,則會拋出異常。
一個建議:
您可以實現Comparator<String>
支持排序算法,如果你需要堅持字符串,並且不希望使用數字或等價類。這樣您可以根據需要對元素進行排序。
我無法理解它,因爲我正在創建整數而不是字符串,但它不起作用。
但是後來我在代碼中看到了一個小錯誤,我忘記了Integer.parseint(String)
被註釋掉了。
無論如何,答案的傢伙有幫助,並加載其他方法來解決這個問題。
Kasper,你應該編輯你的問題來提及這個問題,或者將它添加爲對問題的評論,因爲這不是一個真正的答案。 – ColinD 2010-08-31 20:09:37
序列的字典順序。
- 1. 在快速排序爲什麼我們開始陣列
- 2. 爲什麼不即使使用collections.reverse()排序後,在java中的ArrayList
- 3. 爲什麼原始數組也排序?
- 4. 爲什麼不應該從MSD開始實施基數排序?
- 5. 爲什麼`java.time.ZoneOffset`實例向後排序?
- 6. 爲什麼我的ArrayList不能用比較器進行排序?
- 7. 爲什麼不能Indy 10初始化?
- 8. 爲什麼Genymotion不開始?
- 9. CMake |爲什麼不開始?
- 10. 對對象的ArrayList進行排序(ArrayList在排序後沒有被更改)
- 11. 爲什麼我不能排序這個ArrayList?
- 12. Bean的Arraylist的排序Arraylist
- 13. 排序的ArrayList
- 14. 排序的ArrayList
- 15. ArrayList的排序
- 16. 排序的ArrayList
- 17. 爲什麼(10 ^( - 10))== -4
- 18. rowindex始終從零開始......爲什麼?
- 19. 排序ArrayList的泛型ArrayList
- 20. 爲什麼ArrayList 10的默認容量是?
- 21. PHP - 爲什麼在開始時連接?
- 22. 在arraylist中排序
- 23. 爲什麼GetLastError在我的程序開始之前有錯誤?
- 24. 限制和排序,從什麼字開始下一個結果
- 25. 什麼是開始線程的順序?
- 26. 爲什麼在排序後datagrid選擇的行背景變化?
- 27. 只有觸動開始後什麼?
- 28. neo4j/cypher - 爲什麼排除開始節點?
- 29. 從未排序的ArrayList中創建排序後的數組
- 30. 排序的ArrayList的
你的問題沒有意義。也許你可以添加一些代碼?我有一個預感你正在排序字符串 – 2010-08-31 17:25:56
你正在尋找一個「自然排序」。這裏有一個前面的問題與答案:http://stackoverflow.com/questions/1262239/natural-sort-order-string-comparison-in-java-is-one-built-in – 2010-08-31 17:26:42
也許你正在排序'字符串'而不是'Numbers'? – Kevin 2010-08-31 17:27:06