升序ArrayList以错误的顺序添加元素

时间:2015-04-08 04:31:24

标签: java recursion

我有一个列表,比较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]。

1 个答案:

答案 0 :(得分:0)

您的方法存在逻辑错误,您正在做的是将linememFile的最后一个值进行比较,而不是比较{{1}的当前index行1}}减少memFile

在这里,我根据您所需的逻辑修改了方法。

index

希望它可以帮到你