我有一个列表,比较ArrayList
的列元素(实质上是包含字符串行的ArrayList的字符串)。
我能够正确读取列部分,但是我的插入方法出错(我正在递归执行)。
例如,当它找到一个小于前一个单词的单词时,不会在较大的单词之前插入它,而是将其插入ArrayList
的开头。我不确定为什么会这样,因为我似乎正在按照插入的步骤完全按照我的笔记说。有人能看出为什么会这样吗?
//line is just a string separated by commas
private void insertSorted(String line){
//memFile is the ArrayList
if(memFile.isEmpty()){
memFile.add(0,line);
}
else{
for(int i = memFile.size() - 1; i >=0 ; i--){
int index = i;
String lineList = memFile.get(i);
String[] tokens = line.trim().split(",");
String lineList = memFile.get(i);
String[] tokens1 = lineList.trim().split(",");
//column is the part I want to compare of the tokenized string
while(index >= 0){
if((tokens[column]).compareTo(tokens1[column]) < 0)
index--;
}
break;
}
memFile.add(index+1,line);
System.out.println("memFile is " + memFile);
}//for
}//else
}//insertSorted
打印出来:
3
1
2
2
4
1
as
1
2
2
3
1
4
编辑:
假设我有一个ArrayList memfile
,它包含字符串:
&#34; 1,狗,飞机&#34;
&#34; 3,HAT,篮&#34;
我想按字母顺序对第三个变量进行排序。然后我会对string
进行标记,并且从main方法中,我将调用2(列是我声明为此类的实例变量)。那么,它会搜索令牌[col],或等价的令牌[2]。
答案 0 :(得分:0)
您的方法存在逻辑错误,您正在做的是将line
与memFile
的最后一个值进行比较,而不是比较{{1}的当前index
行1}}减少memFile
在这里,我根据您所需的逻辑修改了方法。
index
希望它可以帮到你