将元素添加到列表中,并用冒号“:”而不是逗号分隔每个元素

时间:2018-04-23 10:48:34

标签: java

我有以下三个要素:

play_full_NAME=556677

pause_full_NAME=9922

stop_full_NAME=112233

字符串"abc"从特定的代码片段中逐个返回上述所有三个元素。

我试图将所有三个元素添加到以冒号“:”

分隔的列表中

示例输出:

play_full_NAME=556677:pause_full_NAME=9922:stop_full_NAME=112233

我的尝试:

List<String> list = new ArrayList<String>();

list.join(":",abc)

请帮助更好地解决这个问题。

3 个答案:

答案 0 :(得分:12)

您对List的理解没有什么缺陷。逗号仅用于表示目的。

要使用冒号连接字符串,您可以执行以下操作

List<String> list = Arrays.asList("play_full_NAME=556677", 
                                  "pause_full_NAME=9922", 
                                  "stop_full_NAME=112233");

String joinedString = String.join(":", list);

答案 1 :(得分:3)

  

你真的了解List吗?

     

实际上,没有分隔符,每个项目/值都存储为不同的“对象”。

所以你有一些独立的值 - 在这种情况下字符串,你可以在屏幕截图中看到什么,或者如果你做System.out.println(someList);它会调用方法toString() which is inherited from Object class的覆盖,这是root Java中所有类的父类。

enter image description here

因此,在List中的每个项目之间添加一些拆分字符绝对没有意义,它们已经拆分,您可以通过get(int position)方法访问每个项目。

因此,如果您想“自己”打印列表中的每个项目,可以按如下方式进行:

for (int i = 0; i < someList.size(); i++) {
    System.out.println(i + " = " + someList.get(i));    
}
/* output will be 
   1 = 1 item
   2 = 2 item
   3 = 3 item
   4 = 4 item
*/

如果您想要实现自定义方法来打印“您的列表”,那么您可以扩展例如。 ArrayList类和覆盖toString方法,但更好和更简单的方法将在一些utils中准备一些方法来获得带有List的上下文的格式化String输出 - 例如。 (注意最后一个元素后面会有;

public static String getFormatStringFromList(ArrayList<String> data) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < data.size(); i++) {
        sb.append(data.get(i) + ";");   
    }

    return sb.toString();
    //eg. 0 item;1 item;2 item;3 item;4 item;
}

要避免使用最后一个分隔符,例如。简单检查

public static String getFormatStringFromListWitoutLastSeparator(List<String> someList) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < someList.size(); i++) {
            sb.append(someList.get(i));
            if(i < someList.size() -1) {
                 sb.append(";");
            }
        }

        return sb.toString();
        //0 item;1 item;2 item;3 item;4 item
        /*
           someList[0] = 0 item
           someList[1] = ;
           someList[2] = 1 item
           someList[3] = ;
           {etc..}
        */
    }
  

从列表中获取String的最佳方法是@krisnik建议:

     

String joinedString = String.join(":", list);

答案 2 :(得分:1)

如果您希望它们位于列表中,则需要单独添加冒号元素。

例如:

List<String> list = new ArrayList<String>();

list.add(abc);
list.add(":");
list.add(def);
list.add(":");

等等。

我建议不要这样做,因为您可以在需要时使用String.formatStringBuilder格式化输出字符串。