Java : Joining String from List<String> in reverse order

标签 java string arraylist reverse

我有List<String> list = Arrays.asList("A", "B", "C");
我想用分隔符 , 加入列表中的所有字符串倒序:

//result
String joinedString = "C,B,A";

实现此目标的最佳方法是什么?
目前我使用索引循环:

String joinedString = "";
List<String> list = Arrays.asList("A", "B", "C");
for (int i = list.size() - 1; i >= 0; i--) {
     String string = list.get(i);
     joinedString = joinedString + string + ",";
}
//to remove ',' from the last string
if(joinedString.length() > 0) {
    joinedString = joinedString.substring(0, joinedString.length() - 1);
}

//Output    
C,B,A

最佳答案

如果您不想通过调用 Collections.reverse(List<?> list) 来修改列表在其上,反向迭代列表。

如果您不知道列表类型,请使用 ListIterator 在不损失性能的情况下向后迭代列表,例如正常 i = 0; i < size()遍历 LinkedList否则会表现不佳。

要连接以逗号分隔的值,请使用 StringJoiner (Java 8+)。

List<String> list = Arrays.asList("A", "B", "C");

StringJoiner joiner = new StringJoiner(",");
for (ListIterator<String> iter = list.listIterator(list.size()); iter.hasPrevious(); )
    joiner.add(iter.previous());
String result = joiner.toString();

System.out.println(result); // print: C,B,A

关于Java : Joining String from List<String> in reverse order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54375068/

相关文章:

c - C 中的 scanf string 和 printf 不能按预期工作

mysql - 需要帮助编写更新查询并替换 mysql 中的许多字符串值

java - 为什么我的 startActivityForResult() 在将 ArrayList<String> 转换为 String[] 时返回 null?

java - 多个 viewholder recyclerview 不加载屏幕外 View

java - NoSuchMethodError : org. slf4j.helpers.MessageFormatter.格式

java - 设置游戏计时器

java - 在字符串常量池中没有对应对象的字符串使用intern方法时返回同一个对象的引用

java - 创建图像 Hype 处理,processing.org

java - 为什么这个 for 数组循环使用 new ARRAY.length-1 ?

java - 需要打印没有 "Brackets"的 ArrayList