首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >最后一个元素特殊大小写的最佳循环习惯用法

最后一个元素特殊大小写的最佳循环习惯用法
EN

Stack Overflow用户
提问于 2010-06-24 05:16:06
回答 18查看 17.8K关注 0票数 52

在执行简单的文本处理和print语句时,我经常遇到这种情况,我循环遍历一个集合,并且希望将最后一个元素作为特殊情况(例如,除了最后一个情况之外,每个正常元素都会用逗号分隔)。

是否有一些最佳实践习惯用法或优雅的形式,不需要重复代码或在循环中推入if和else。

例如,我有一个字符串列表,我希望以逗号分隔的列表打印这些字符串。( do while解决方案已经假设列表有2个或更多的元素,否则它将与更正确的for循环条件一样糟糕)。

例如List =(“狗”,“猫”,“蝙蝠”)

我想打印“狗,猫,蝙蝠”

我给出了两种方法

带条件的

  1. For循环

公共静态字符串项目(String[] items) { String itemOutput = "[";for (int i= 0;i< items.length;i++) { //如果(i < (items.length - 1)) { itemOutput += itemsi + ",";} else { // last element itemOutput += itemsi;}} itemOutput += "]";返回itemOutput;}

  • 执行while循环启动循环

公共静态字符串doWhileLoopPrime(String[] items) { String itemOutput = "[";int i= 0;itemOutput += itemsi++;if (i < (items.length)) { do { itemOutput += ",“+ itemsi++;} while (i < items.length);} itemOutput += "]";return itemOutput;}

测试人员类:

公共静态空main(String[] args) { String[] items ={“狗”,“猫”,“蝙蝠”};System.out.println(forLoopConditional(items));System.out.println(doWhileLoopPrime(items));}

在Java AbstractCollection类中,它有以下实现(有点冗长,因为它包含所有的边缘情况错误检查,但还不错)。

代码语言:javascript
复制
public String toString() {
    Iterator<E> i = iterator();
if (! i.hasNext())
    return "[]";

StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
    E e = i.next();
    sb.append(e == this ? "(this Collection)" : e);
    if (! i.hasNext())
    return sb.append(']').toString();
    sb.append(", ");
}
}
EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2010-06-26 06:11:56

在这些答案中有很多for循环,但我发现迭代器和while循环读起来要容易得多。例如:

代码语言:javascript
复制
Iterator<String> itemIterator = Arrays.asList(items).iterator();
if (itemIterator.hasNext()) {
  // special-case first item.  in this case, no comma
  while (itemIterator.hasNext()) {
    // process the rest
  }
}

这是Joiner在谷歌集合中采用的方法,我发现它非常可读性很强。

票数 27
EN

Stack Overflow用户

发布于 2010-06-24 06:23:34

我通常是这样写的:

代码语言:javascript
复制
static String commaSeparated(String[] items) {
    StringBuilder sb = new StringBuilder();
    String sep = "";
    for (String item: items) {
        sb.append(sep);
        sb.append(item);
        sep = ",";
    }
    return sb.toString();
}
票数 44
EN

Stack Overflow用户

发布于 2010-06-24 05:53:55

代码语言:javascript
复制
string value = "[" + StringUtils.join( items, ',' ) + "]";
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3105613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档