java中两个String字符串比较去重

假设有两个字符串

String qc1 = "张三,李四,赵二,谢大脚,刘能";
String qc2 = "谢广坤,谢大脚,张三";

如何去重,只留下qc2中不包含qc1中的字段呢,这时候要用到 indexOf()

 java.lang.String.indexOf(String str)

indexOf() 返回此字符串中指定子字符串第一次出现的索引,如果没有的话返回-1;

写法一(String字符串直接拼接)不推荐

	String qc1 = "张三,李四,赵二,谢大脚,刘能";
		String qc2 = "谢广坤,谢大脚,张三";
		String qc3 = "";
		String[] arrqc1 = qc1.split(",");
		String[] arrqc2 = qc2.split(",");
			
		for(int i = 0;i <arrqc1.length;i++) {
			qc2.indexOf(arrqc1[i]);
			if (qc2.indexOf(arrqc1[i]) == -1) {
				qc3 +=  arrqc1[i] + ",";
			}
		}
		//去掉最后一个  ','
		qc3 = qc3.toString().substring(0,qc3.length()-1);
	    System.out.println("qu3= "+qc3);

打印的结果是:

写法二(利用StringBuilder推荐

        String qc1 = "张三,李四,赵二,谢大脚,刘能";
		String qc2 = "谢广坤,谢大脚,张三";
	    StringBuilder sBuilder2 = new StringBuilder();
	    String aString = "";
	    String[] array1 = qc1.split(",");
	    for (int i = 0; i < array1.length; i++) {
	        if (qc2.indexOf(array1[i]) == -1) {
	            sBuilder2.append("'").append(array1[i]).append("'").append(",");
	        }
	    }

	    // 去除最后一个","
	    if (sBuilder2.toString().endsWith(",")) {
	    	aString = sBuilder2.toString().substring(0,sBuilder2.length()-1);
	    }
	    System.out.println("sBuilder2== "+aString);

打印结果:

但是呢,我们一般拒绝使用方法一(String)进行拼接,为什么?因为影响性能

String是字符串常量的引用,String += String其实就是重新new了一个新的临时对象。

所以,拼接字符串不能使用String进行拼接,要使用StringBuilder或者StringBuffer

既然说到这了,不妨再说一下String 、StringBuffer 、StringBuilder三者的区别

1、修改String对象的值,内存地址会发生改变

2、StringBuffer和StringBuilder的值可以被多次修改,但并不能创建新的对象,即内存地址不变

3、StringBuffer是线程安全的 StringBuilder是线程不安全的

4、StringBuffer的执行速度要比StringBuilder快

5、StringBuffer和StringBuilder的默认容量长度为16。

 6、 如果在声明StringBuffer对象的同时,通过构造方法进行value[]初始化(即给变量赋值), 则容量长度是是(value[]的长度+16)

 7、 如果调用append方法拼接字符串,字符串的长度超出了容量长度,则对容量长度进行扩容,扩容大小为(原长度

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒鱼七忆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值