优雅的用符号拼接list中的元素
【优雅的用符号拼接list中的元素】参考Android SDK 中 TextUtil.join方法, 加入泛型, 方便用户指定要拼接的是对象中的哪个字段.
public static void main(String[] args) {ArrayList arrayList = new ArrayList<>();
arrayList.add(new Data("是"));
arrayList.add(new Data("的"));
arrayList.add(new Data("订单"));
arrayList.add(new Data("试试"));
//传统写法
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0;
i < arrayList.size() ;
i++) {
stringBuilder.append(arrayList.get(i).a+",");
}
System.out.println( "gaom s1="+stringBuilder.substring(0,stringBuilder.toString().lastIndexOf(",")));
//用法1 不用泛型 , 强转
String joinS = join("|", arrayList, new IKey() {
@Override
public String getKey(Object o) {
return ((Data) o).a;
}
});
//用法2用泛型
String joins = join(",", arrayList, new IKey() {
@Override
public String getKey(Data o) {
return o.a;
}
});
System.out.println( "gaom s3="+joinS);
System.out.println( "gaom s2="+joins);
}public static class Data {
public String a;
public Data(String a) {
this.a = a;
}
}public interface IKey {
String getKey(T t);
}public static String join(@NonNull CharSequence delimiter, @NonNull Iterable tokens) {
return join(delimiter, tokens, new IKey() {
@Override
public String getKey(Object o) {
return o.toString();
}
});
}public static String join(@NonNull CharSequence delimiter, @NonNull Iterable tokens, IKey iKey) {
final Iterator> it = tokens.iterator();
if (!it.hasNext()) {
return "";
}
final StringBuilder sb = new StringBuilder();
String key = iKey.getKey(it.next());
sb.append(key);
while (it.hasNext()) {
sb.append(delimiter);
String key2 = iKey.getKey(it.next());
sb.append(key2);
}
return sb.toString();
}
推荐阅读
- 故乡小镇
- 相忘于江湖:【一】十六岁的花季只开一次
- 你是我全部的渴望和幻想
- 传统的餐饮业遇到瓶颈的原因
- 如何在30秒内说出关键点(下)
- 致七年后的自己
- SpringCloud|SpringCloud Config Server和Client的配置使用
- 马上要开学
- 随笔(精神与灵魂相分离的一些思考)
- 老李的三世情缘(上)