自定义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 ();    }}


原文地址:https://www.cnblogs.com/coloz/p/10288999.html

时间: 2024-10-10 03:20:19

自定义StringBuilder类拼接非空字符串的相关文章

C#--数组、字符与字符串--StringBuilder类、字符与字符串、字符及转义字符

C#--数组 字符与字符串--StringBuilder类 字符与字符串 字符及转义字符 原文地址:https://www.cnblogs.com/macT/p/9288276.html

字符串处理总结之二(C#StringBuilder类)

动态串StringBuilder 与String类相比,System.Text.StringBuilder类可以实现动态字符串.此外,动态的含义是指在修改字符串时,系统不需要创建新的对象,不会重复开辟新的内存空间,而是直接在原StringBuilder对象的基础上进行修改.下面,将从各个应用的角度,详细讨论StringBuilder类. 1. 声明StringBuilder串 StringBuilder类位于命名空间System.Text中,使用时,可以在文件头通过using语句引入该空间: u

9.11排序与查找(五)——有个排序后的字符串数组,其中散布着一些空字符串,找出给定字符串的位置

/** * 功能:有个排序后的字符串数组,其中散布着一些空字符串,找出给定字符串的位置. */ /** * 思路:对二分查找法做修改,与mid比较的地方,如果mid为空字符串,则将mid换到离它最近的非空字符串的位置. * @param strings * @param str * @return */ public static int search(String[] strings,String str){ if(strings==null||str==null||str=="")

关于JavaScript中0、空字符串、'0'是true还是false的总结

最近被问到关于js中空字符串是true还是false得问题,一时间没想起来,现在在chrome的console面板上输出代码测试一下. "" == false 结果是true   在js中空字符串与0相等  即空字符串等于false 0 == false  结果是tue   比较的时候 布尔类型的转换成number类型  false 为0  true 为1 “0” == fase 结果是true  字符串准成number Boolean("0") 结果是true 

C#数据结构和算法-字符串、String 类和StringBuilder类

*本文为摘抄笔记* Preface当程序需要对String对象进行许多改变时会用到StringBuilder类.因为字符串和String对象都是不可改变的,而StringBuilder对象则是易变的.String类不可变,就意味着每次对象进行改变时都需要创建一个新的对象副本.如果在创建长的字符串,或者是对相同对象进行许多改变,那么就应该用StringBuilder类来代替.StringBuilder对象是可变的,性能会更好. 字符串是字符的序列,可以包含字母.数字和其他符号.C#语言中,用双引号

解决CsvWriter:中文乱码、末尾行多一行空格(/r)、非第一列空字符串""显示null问题

一:主要内容 解决CsvWriter存csv,csv文件打开后中文乱码问题 解决CsvWriter存csv,csv文件最后一行总是多一行空行的问题 解决CsvWriter存csv,csv文件不是第一列的时候,想存入""即空字符串无法存入显示null的问题 二:解决问题前:需要做的事情 因为网上的CsvWrite的jar包导入到我们的工程中是class文件,针对上面的问题是无法修改源码的,但是我们又想用这个工具来操作csv,所以可以在自己的工程中首先pom引用这个jar包 <dep

正则表达式特殊验证符;非空、相等、范围验证;trim():去掉字符串的前后空格;onblur:失去焦点;

<body><form action="lizi1.html" method="post"><input type="text" name="uid" id="uid" onblur="Check()" /> <input type="text" name="pw1" id="pw1"

毕向东Java视频学习笔记【Day15 字符串+StringBuffer+StringBuilder类基础】

.01 string类特点 String类的特点: 字符串对象一旦被初始化就不可以被改变. 面试题 String s = "abc"; String s1 = NEW String ("abc"); System.out.println(s==s1); 输出false表示这两个字符串地址是不是相等的,为什么? 答:第一个是在字符串常量池中创建了abc字符串并且赋给了引用型变量s 第二个是在堆内存中用new的方式创建了string对象 并且在new的时候接受了一个字符

工具类(过滤接口空值, value 或 空字符串) - iOS

为了便于日常开发效率,因此创建了一些小的工具类便于使用.具体 code 如下:声明: #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface YHIsEmptySafeValue : NSObject /** 过滤 value 中空值 [NSString stringWithFormat:@"%@", SafeValue([dicCommand objectForKey:@&quo