尝试对包含以下内容的 Arraylist 进行排序
[[2/11, 11/48], [8/35, 35/288], [16/43, 43/288], [4/5, 5/16], [75/152, 19/210], [135/163, 163/1680]]
目前我已经使用这个 Arraylist 排序,
for(int j = 0; j < knowledgeD.size()-1; j++) {
if(knowledgeD.get(j).get(0).compareTo(knowledgeD.get(j+1).get(0)) == 1) {
Collections.swap(knowledgeD, j, j+1);
这对真值进行排序,它们是每个括号中的第一个值,因此,2/11 8/35 等它根据值对它们进行排序,从最小到最大,
然而,我注意到它在中间的某个地方搞砸了,没有订购 4/5 和 75/132,我不知道为什么。我试图添加这个故障安全代码来做显而易见的事情,
for(int k = 0; k < knowledgeD.size()-3; k++) {
if(knowledgeD.get(k).get(1).compareTo(knowledgeD.get(k+1).get(1)) == -1){
Collections.swap(knowledgeD, k-1, k+1);
但是,既然我已经实现了此代码,我就会不断收到索引越界错误。任何人都可以伸出援助之手吗?
干杯,
辛