当我打印出arraylist的索引时,如何删除最后一个逗号

时间:2014-03-26 14:30:32

标签: java arraylist comma

List<String> list1 = new ArrayList<String>(words.length);
List<String> list2 = new ArrayList<String>(word.length);    
for(String x: list1){
        for(String y: list2){
            if(x.equalsIgnoreCase(y)){
               System.out.print(list1.indexOf(x) +" "+ ",");
            }
        }
    } 

对于此功能,运行后,输出将为2,5,7 .... 9, 我的问题是如何删除最后一个逗号?

8 个答案:

答案 0 :(得分:2)

我会在开头打印逗号,就像这样 -

boolean first = true;
for(String x: list1){
    for(String y: list2){
        if(x.equalsIgnoreCase(y)){
           if (first) {
               first = false;
           } else {
               System.out.print(", "); // <-- or " ," if you prefer.
           }
           System.out.print(list1.indexOf(x));
        }
    }
}

答案 1 :(得分:0)

你将不得不弄清楚最后一个项目的印刷时间。

你可以通过首先遍历列表并找出最后一个逗号的位置来做到这一点,或者你可以使用StringBuilder构建整个String,然后在完成时使用逗号。

或者,您可以将之前的逗号放在除第一个单词之外的每个单词的单词中。

答案 2 :(得分:0)

一种解决方案是使用循环控制索引:

int i,j;
for(i = 0;i < x.size();i++){
     for(j = 0;j < y.size() - 1; j++){
         if(list1.get(i).equalsIgnoreCase(list2.get(j))) {
              System.out.print(list1.indexOf(x) +" "+ ",");
         }
     }
     if(list1.get(i).equalsIgnoreCase(list2.get(j))) {
          System.out.print(list1.indexOf(x));
     }
} 

答案 3 :(得分:0)

使用Iterator检查列表中是否还有下一个元素。

System.out.print(list1.indexOf(x) +" ");
if(itr.hasNext()) {
    System.out.print(" ,"); // print the comma if there still elements
}

答案 4 :(得分:0)

为了完整起见,这里是Java 8:

final String joined = list1.stream().
        flatMap(s -> list2.stream().filter(y -> s.equalsIgnoreCase(y))).
        mapToInt(s -> list1.indexOf(s)).
        mapToObj(Integer::toString).
        collect(Collectors.joining(", "));

答案 5 :(得分:0)

您可以在构建字符串

后删除最后一个逗号

构建字符串:

StringBuilder output = new StringBuilder();
for(String x: list1){
  for(String y: list2){
     if(x.equalsIgnoreCase(y)){
        output.append(list1.indexOf(x) +" "+ ",");
     }
   }
}

删除最后一个逗号打印:

System.out.println(output.substring(0, output.lastIndexOf(",")));

答案 6 :(得分:0)

str = str.replaceAll(", $", "");

答案 7 :(得分:-1)

这很容易,这样做:

Boolean b = false;
for(String x: list1){
    for(String y: list2){
        if(x.equalsIgnoreCase(y)){
           System.out.print((b ? "," : "") + list1.indexOf(x));
           b = true;
        }
    }
}