当前位置: 首页 > 面试题库 >

在Java中用定界符连接值列表的最优雅方法是什么?

习海
2023-03-14
问题内容

我从未发现过一种整洁的方法来进行以下操作。

说我有一个字符串列表/数组。

abc
def
ghi
jkl

我想将它们连接成一个以逗号分隔的字符串,如下所示:

abc,def,ghi,jkl

在Java中,如果我编写这样的内容(请原谅语法),

String[] list = new String[] {"abc","def","ghi","jkl"};
String str = null;
for (String s : list)
{
   str = str + s + "," ;
}

System.out.println(str);

我去拿

abc,def,ghi,jkl,  //Notice the comma in the end

所以我必须重写上面的for循环,如下所示

...
for (int i = 0; i < list.length; i++)
{
   str = str + list[i];
   if (i != list.length - 1)
   {
     str = str + ",";
   }
}
...

可以在Java中以更优雅的方式完成此操作吗?

我肯定会使用StringBuilder /
Buffer来提高效率,但是我想举例说明这种情况,不要太冗长。优雅地说,我的意思是避免if在循环内进行ugly(?)检查的解决方案。


问题答案:

这是我的版本:Java技巧:收集字符串中对象的最快方法

StringBuilder buffer = new StringBuilder ();
String delim = "";
for (Object o: list)
{
    buffer.append (delim);
    delim = ", "; // Avoid if(); assignment is very fast!
    buffer.append (o);
}
buffer.toString ();

另外一个好处是:如果循环中的代码更复杂,则此方法将产生正确的结果而无需使用if()s。

还要注意,对于现代CPU,分配将仅在高速缓存中(或可能仅在寄存器中)进行。

结论:虽然此代码乍看之下很奇怪,但它具有许多优点。



 类似资料:
  • 问题内容: 我爱Guava,并且我会继续使用Guava。但是,在有意义的地方,我尝试使用 Java 8中 的“新内容” 。 “问题” 假设我要在中加入url属性。在 番石榴中, 我会这样做: 哪里是。 题 在 Java 8中 (没有任何第三方库),最优雅的方法是什么? 问题答案: 您可以获取地图条目集的流,然后将每个条目映射到所需的字符串表示形式,并使用将它们连接到单个字符串中。 但是,由于该条目

  • 问题内容: 假设我有一大堆值aa bb cc dd ee ff gg等,我需要在春季作为构造函数传递 如果我需要配置为字符串数组,那么在春季很容易,因为我们可以将值指定为以逗号分隔,例如aa,bb,cc等。 如果我需要配置为列表,则需要执行以下操作 当值的数量增加时,它占据了巨大的界限,并且看起来很丑陋。 可以请一些人帮我如何将大值作为字符串列表传递给构造函数吗? 问题答案: 值是否从属性文件传递

  • 本文向大家介绍检查Python中字符串是否为空的最优雅的方法是什么?,包括了检查Python中字符串是否为空的最优雅的方法是什么?的使用技巧和注意事项,需要的朋友参考一下 空字符串是“虚假的”,这意味着它们在布尔上下文中被认为是错误的,因此您只能使用非字符串。   示例 输出结果 这将给出输出: 示例 如果您的字符串可以有空格,并且您仍然希望它的值为false,则可以剥离它并再次检查。例如: 输出

  • 问题内容: 到目前为止,这是我得到的: 这让我既震惊又浪费。如果存在firstChoice,则我将不必要地计算secondChoice。 还有一个更有效的版本: 在这里,如果不复制映射器或声明另一个局部变量,就无法将某些映射函数链接到最后。所有这些使代码比要解决的实际问题更加复杂。 我宁愿这样写: 但是可选:::显然不存在。怎么办? 问题答案: 试试这个: map方法为您提供了一个。然后,该方法将

  • 问题内容: 我正在寻找最短的方法(在代码中)初始化字符串列表和字符串数组,即包含“ s1”,“ s2”,“ s3”字符串元素的列表/数组。 问题答案: 有多种选择。我个人喜欢使用番石榴: (当然,番石榴是值得拥有的图书馆:) 仅使用JDK,您可以使用: 请注意,这将返回一个,但这 不是 正常的-这是一个内部变量,该变量是可变的但固定大小。 就我个人而言,我更喜欢Guava版本,因为它可以清楚说明正

  • 问题内容: 输入: 输出: 什么是最优雅的(阅读:Pythonic)书写方式? 问题答案: 我自己会写一个生成器,但是像这样: