从LongArrayList中拆分逗号

时间:2013-08-15 11:31:12

标签: java list arraylist containers

我有一个Long ArrayList,它包含

[1982,1984,1986]

如何分隔逗号并将年份作为字符串?像这样:

  

1982
  1984年
  1986年

到目前为止,这是我的代码:

private String yearValue(MyProject myProjects){
    List<Long> myList = new ArrayList<>();

    List<MyValues> values = myProject.getProjects().getYearvalues();

    String year = "";

    for (MyValue value : values){
        Long key = (long)value.getYearvalues();
        if(!myList.contains(key)){
            myList.add(key);
        }
        year = myList.toString();
    }
    return year;
}

1 个答案:

答案 0 :(得分:2)

即使没有一行代码,很明显您在列表中使用toString(),如下所示:

System.out.println(myList.toString());

为此,请不要使用ArrayList类的toString()。使用正确的格式:

StringBuilder sb = new StringBuilder();
for(Long l:myList) {
    if(sb.length()>0) {
        sb.append(' '); // this is the separator between the items. '\n' will result in line breaks
    }
    sb.append(l);
}
String myString=sb.toString();

此代码将数组中的Long元素连接到一个字符串,由单个空格分隔。它不是一个班轮吗?不它不是。这很冗长。立即可读。

更新,将年份分开,只需将' '换为'\n'

我为什么选择Ruchira?他的解决方案是否会返回错误的结果?不,它返回完全相同。那么为什么我这么多的运动员呢?

  • 最重要的是:他的解决方案肯定不容易阅读。正则表达式是一个非常强大的工具,但与正确的代码相比,阅读和理解正则表达式具有挑战性,即使这很简单。始终善待同事并编写可读代码。此外,如果我需要建造房屋,我不想建造2栋房屋,并拆除房屋以获得结果......
  • 中等重要:使用List.toString()。这将代码与一个实现的确切行为联系起来。从长远来看,这是非常糟糕的做法。

TL; DR 这基本上只是为了我自己的娱乐:

  • 至少非常重要(记住Knuth!):他的解决方案很慢。好的,不是4个长实例,但序列化和应用正则表达式的成本更高。不是很重要(在发布结束时完全SSCCE。)。

所有运行都有{00}}范围内之前生成的随机Longs的1000000次转换,每个批次之间都有[0;9999]建议和System.gc(),并以Thread.sleep(1000)执行当然。当然不应该考虑第一轮。

-Xmx4096m -Xms4096m

代码,对于那些无聊的人:

Method       STRING_BUILDER:    78 ms Method         REGEX_STRING:   312 ms Method           REGEX_LONG:   265 ms Method REGEX_STRING_PRECOMP:   249 ms 
Method       STRING_BUILDER:    47 ms Method         REGEX_STRING:   234 ms Method           REGEX_LONG:   202 ms Method REGEX_STRING_PRECOMP:   234 ms 
Method       STRING_BUILDER:    46 ms Method         REGEX_STRING:   234 ms Method           REGEX_LONG:   219 ms Method REGEX_STRING_PRECOMP:   218 ms 
Method       STRING_BUILDER:    47 ms Method         REGEX_STRING:   219 ms Method           REGEX_LONG:   187 ms Method REGEX_STRING_PRECOMP:   203 ms 
Method       STRING_BUILDER:    47 ms Method         REGEX_STRING:   218 ms Method           REGEX_LONG:   187 ms Method REGEX_STRING_PRECOMP:   172 ms