我有以下三个要素:
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)
请帮助更好地解决这个问题。
答案 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中所有类的父类。
因此,在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.format
或StringBuilder
格式化输出字符串。