阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

StringJoiner

31次阅读
没有评论

共计 1595 个字符,预计需要花费 4 分钟才能阅读完成。

要高效拼接字符串,应该使用StringBuilder

很多时候,我们拼接的字符串像这样:

// 输出: Hello Bob, Alice, Grace!
public class Main {public static void main(String[] args) {String[] names = {"Bob", "Alice", "Grace"};
        var sb = new StringBuilder();
        sb.append("Hello");
        for (String name : names) {sb.append(name).append(",");
        }
        // 注意去掉最后的 ",":
        sb.delete(sb.length() - 2, sb.length());
        sb.append("!");
        System.out.println(sb.toString());
    }
}

类似用分隔符拼接数组的需求很常见,所以 Java 标准库还提供了一个 StringJoiner 来干这个事:

import java.util.StringJoiner;
public class Main {public static void main(String[] args) {String[] names = {"Bob", "Alice", "Grace"};
        var sj = new StringJoiner(",");
        for (String name : names) {sj.add(name);
        }
        System.out.println(sj.toString());
    }
}

慢着!用 StringJoiner 的结果少了前面的 "Hello" 和结尾的 "!"!遇到这种情况,需要给StringJoiner 指定“开头”和“结尾”:

import java.util.StringJoiner;
public class Main {public static void main(String[] args) {String[] names = {"Bob", "Alice", "Grace"};
        var sj = new StringJoiner(",", "Hello", "!");
        for (String name : names) {sj.add(name);
        }
        System.out.println(sj.toString());
    }
}

String.join()

String还提供了一个静态方法 join(),这个方法在内部使用了StringJoiner 来拼接字符串,在不需要指定“开头”和“结尾”的时候,用 String.join() 更方便:

String[] names = {"Bob", "Alice", "Grace"};
var s = String.join(",", names);

练习

请使用 StringJoiner 构造一个 SELECT 语句:

import java.util.StringJoiner;

public class Main {public static void main(String[] args) {String[] fields = {"name", "position", "salary" };
        String table = "employee";
        String select = buildSelectSql(table, fields);
        System.out.println(select);
        System.out.println("SELECT name, position, salary FROM employee".equals(select) ? "测试成功" : "测试失败");
    }

    static String buildSelectSql(String table, String[] fields) {// TODO:
        return "";
    }
}

下载练习

小结

用指定分隔符拼接字符串数组时,使用 StringJoiner 或者 String.join() 更方便;

StringJoiner 拼接字符串时,还可以额外附加一个“开头”和“结尾”。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-08-05发表,共计1595字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中