我有一个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;
}
答案 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?他的解决方案是否会返回错误的结果?不,它返回完全相同。那么为什么我这么多的运动员呢?
TL; DR 这基本上只是为了我自己的娱乐:
所有运行都有{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