假设有两个字符串
如何去重,只留下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方法拼接字符串,字符串的长度超出了容量长度,则对容量长度进行扩容,扩容大小为(原长度

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/47471.html