自定义StringBuilder类拼接非空字符串
主要目的: 为了拼接多个非空字符串,还能达到链式的装X效果
这里不考虑线程安全,所以使用StringBuilder快速拼接非空内容,中间用","作为分隔。 代码如下:
package com.baidu;
import org.apache.commons.lang.StringUtils;
import org.junit.Test; public class MyStringBuilder {
private StringBuilder sb;
private Thread thread;
public MyStringBuilder() {
this.thread = Thread.currentThread ();
//判断放在放在构造函数中
if (sb == null) {
sb = new StringBuilder ();
}
} public StringBuilder getSb() {
return sb;
} public MyStringBuilder setSb(StringBuilder sb) {
this.sb = sb;
return this;
} //item为空不拼接
public MyStringBuilder append(String item) {
if (this.thread != Thread.currentThread ()) {
throw new RuntimeException ("不能在多线程中使用");
} if (StringUtils.isNotBlank (item)) {
if (sb.length () > 0) {
sb.append (",");
}
sb.append (item);
}
return this;
} //不暴漏get方法,直接用类实例toString()
public String toString() {
//清空缓存并返回sb里的数据
String var1 = sb.toString ();
sb.delete (0, sb.length ());
return var1;
} @Test
public void test() {
MyStringBuilder mySb = new MyStringBuilder ();
mySb.append ("aaa").append ("bbb").append ("ccc");
System.out.println ("mySb :" + mySb.toString ()); MyStringBuilder mySb2 = new MyStringBuilder ();
mySb2.append ("aaa2")
.append ("bbb2")
.append ("ccc2");
System.out.println ("mySb2 :" + mySb2.toString ()); //测试不能再多线程使用异常
new Thread (() -> {
mySb.append ("rr");
}).start ();
}
}
自定义StringBuilder类拼接非空字符串的更多相关文章
- C#--数组、字符与字符串--StringBuilder类、字符与字符串、字符及转义字符
C#--数组 字符与字符串--StringBuilder类 字符与字符串 字符及转义字符
- 字符串处理总结之二(C#StringBuilder类)
动态串StringBuilder 与String类相比,System.Text.StringBuilder类可以实现动态字符串.此外,动态的含义是指在修改字符串时,系统不需要创建新的对象,不会重复开辟 ...
- 关于JavaScript中0、空字符串、'0'是true还是false的总结
最近被问到关于js中空字符串是true还是false得问题,一时间没想起来,现在在chrome的console面板上输出代码测试一下. "" == false 结果是true ...
- Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式
一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...
- 动态字符串 Stringbuilder类
StringBuilder动态字符串 string 类型的修改会浪费资源,如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类, stringbuild ...
- java常用类与包装类--常用类字符串String类、StringBuffer类、Stringbuilder类
1.String类 1.1String类的概念和储存结构: (1)字符串是一个比较特殊的对象,可以使用new,也可以不使用new来创建字符串对象 String s1 = new String(&quo ...
- 解决CsvWriter:中文乱码、末尾行多一行空格(/r)、非第一列空字符串""显示null问题
一:主要内容 解决CsvWriter存csv,csv文件打开后中文乱码问题 解决CsvWriter存csv,csv文件最后一行总是多一行空行的问题 解决CsvWriter存csv,csv文件不是第一列 ...
- 数据结构和算法 – 4.字符串、 String 类和 StringBuilder 类
4.1.String类的应用 class String类应用 { static void Main(string[] args) { string astring = "Now is The ...
- linux环境判断字符串是否为非空
需求描述: 今天帮同事调整脚本,涉及到判断一个字符串为非空的,在此记录下. 操作过程: 通过-n来判断字符串是否为非空,如果为非空那么就是真 #!/bin/bash Str1='MyTest' if ...
随机推荐
- LeetCode 1037. Valid Boomerang (有效的回旋镖)
题目标签:Math 题目给了我们三个点,让我们判断这三个点是否在一条直线上. 利用斜率 k = (y1 - y0) / (x1 - x0) 来判断,如果 三个点 abc, ab 的斜率 = bc 的斜 ...
- 最详尽使用指南:超快上手Jupyter Notebook
最详尽使用指南:超快上手Jupyter Notebook - CSDN博客https://blog.csdn.net/DataCastle/article/details/78890469
- python中字典排序
一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...
- [AH2017/HNOI2017]单旋
题目 \(\rm splay\)水平太差,于是得手玩一下才能发现规律 首先插入一个数,其肯定会成为其前驱的右儿子或者是后继的左儿子,进一步手玩发现前驱的右儿子或者是后继的左儿子一定只有一个是空的,我们 ...
- 【python】并集交集
set是用来去重的. 在list里使用union函数.这种方式不适用于元素为字典的. list(set(a)^set(b)) 这是求差集 所以交集就是并集和ab的差集. import random d ...
- sql 特殊时间值 第一天或最后一天 无计算错误
DECLARE @dt datetimeSET @dt=GETDATE() DECLARE @number intSET @number=3 --1.指定日期该年的第一天或最后一天--A. 年的第一天 ...
- 了解JNI技术
在线文库系统用到了Jacob,它是基于JNI技术实现的,通过调用MS Office的Com接口实现,我这里对JNI技术进行一个学习. 基本上JNI技术相当于一个代理,因为java的跨平台特性,所以它自 ...
- 神经网络 (2)- Alexnet Training on MNIST
文章目录 Win10 Anaconda下配置tensorflow+jupyter notebook环境 AlexNet 识别MNIST Win10 Anaconda下配置tensorflow+jupy ...
- RabbitMQ学习第一记:用java连接RabbitMQ
1.什么是RabbitMQ MQ(Message Queue):消息队列,是服务端设计的一个可以存储大量消息的队列,并提供客户端操作队列的方法:生产队列(向队列中添加数据).消费队列(从队列中取数据) ...
- 从服务器上下载下来的代码,部署到本地时,Url自动带www前缀
fix步骤: 1.网站根目录下,找到.htacess文件,有记事本打开 2.定位到 RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} !^www\ ...