在java开发中碰到了有些字符串是重复的,如果在进行业务处理要全部遍历太对的数据就会重复,所以在进行业务处理前进行一个去重操作。
这里由于业务需要所以先将字符串转化为string数组,使用split分割,然后将string数组一个个放到list里(list的remove可以将你不要的字符串删除掉,代参数的哦)
可以看到我使用的是list,在list里包含了一个contains函数,表示当前字符串是否与list里的元素有相同没有就add进list里
在最后还将list里的元素转化为string数组就将重复的字符串去除了,在最后使用了substring将字符串截取,在这里如果你的otherAppid太长的话会造成内存溢出,因为substring
的实现是先将字符串拷贝到另一块内存,然后将字符串截取(这也是我看了支付宝的支付dom有个疑问然后查找资料得到的有兴趣的可以找下资料看下)所以可以使用
int i=0;
if (i == newStr.length-1) {//拼接时,不包括最后一个,字符
otherAppid=otherAppid+commercial_account;
} else {
otherAppid=otherAppid+commercial_account+",";
}
i++;
判断下。
贴出代码
String otherAppid="";
String tmp="123,234,123,234,567,789,adb,asc,dcf,adb";
String[] commercial_accounts=tmp.split(",");
List<String> list = new ArrayList<String>();
for (int i=0; i<commercial_accounts.length; i++) {
System.out.print("commercial_accounts:"+commercial_accounts[i]);
System.out.print("\n");
if(!list.contains(commercial_accounts[i])){
//去除重复的字符串
list.add(commercial_accounts[i]);
}
}
//list.remove(1); 去除不想要的字符串
String[] newStr = list.toArray(new String[0]); //返回一个数组
int i = 0;
for(String commercial_account:newStr){
//otherAppid=otherAppid+commercial_account+",";
if (i == newStr.length-1) {//拼接时,不包括最后一个,字符
otherAppid=otherAppid+commercial_account;
} else {
otherAppid=otherAppid+commercial_account+",";
}
i++;
}
System.out.print("otherAppid:"+otherAppid);
System.out.print("\n");
//otherAppid=otherAppid.substring(0,otherAppid.length()-1);
System.out.print("otherAppid:"+otherAppid);