我有以下三个要素:

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 list = new ArrayList();

list.join(":",abc)

请提供更好的解决方法。

字符串" abc"一个接一个地返回上述所有三个元素-这是什么意思?

有更好的方法吗? 您当前的尝试甚至不会编译。

@khelwood。 我正在运行一个循环,逐个返回元素。我的目标是将它们存储在列表中,其中每个元素都用冒号":"分隔。

@感谢您的回应。 我正在寻找一种将它们存储在列表中的方式,其中每个元素都用冒号":"分隔

请问为什么您需要在该List中的每个实例之间添加一个String":"`? 说实话,这似乎是一个奇怪的要求。 如果这是以后打印列表。 在每个元素之间而不是列表本身中打印List时,只需添加:。

列表不存储分隔符。 输出将取决于给出输出的代码? 我可能会感到困惑。

为什么您认为list.add(":", abc)有效? 您检查文档了吗? 该类中没有这样的方法。

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

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

List list = Arrays.asList("play_full_NAME=556677",

"pause_full_NAME=9922",

"stop_full_NAME=112233");

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

感谢您的回应。但是这三个元素的值不是静态的,而是动态的,因此无法对值进行硬编码。我已经看过了:stackoverflow.com/questions/13395114/

是。这将适用于任何动态列表。您能否以期望的方式分享您的意见?

有趣的是String.join(CharSequence delimiter, Iterable extends CharSequence> elements)方法@Jane。这可能需要一些解释,但这是一个很好的答案。

感谢您的努力!

Did you really understood the List well?

In fact, there is no separator, each item / value is stored as different"object".

因此,您有一些独立的值-在这种情况下为字符串,可以在下面的屏幕快照中看到什么,或者如果您执行System.out.println(someList);,它将调用从Object类继承的方法toString()的覆盖,即Java中所有类的根父类。

Java 几个插入指定位置元素有就修改无就添加 java列表添加元素_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方法,但是更好和更简单的方法是在某些实用程序中准备一些方法以获取具有List-上下文的格式化String输出。 (注意,最后一个元素后面将是;)

public static String getFormatStringFromList(ArrayList 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 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..}
*/
}
The best approach to get String from list will be like @krisnik advised:
String joinedString = String.join(":", list);

很好的解释(您应该为第一个代码添加输出),但请检查krisnik以查看如何正确添加分隔符。您的解决方案顺便添加了一对多的分隔符。

@AxelH嘿,谢谢,我添加了更多的提示:)是的,您也是正确的,这是可行的,但是完全不是最好的方法,只是为了让示范理解

我个人更喜欢使用sb.setLength(sb.length() - 1)删除末尾的最后一个字符。这使我可以删除循环中的条件;)仅需检查列表中是否至少有一项(开始时)。

呵呵:D有很多方法,但是可以肯定setLength会更有效

非常感谢您的帮助!

@JAne还检查@krisnik解决方案,它更好地用于创建与Array或List分离的字符串

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

例如:

List list = new ArrayList();

list.add(abc);

list.add(":");

list.add(def);

list.add(":");

等等。

但是,我建议不要这样做,因为您可以在需要时使用String.format或StringBuilder简单地格式化输出字符串。