这样一个字符串String str2 = "0,1,4,10,12,13,0,1,7,8,0,1,7,9"
我想删除重复的字符串,但是排序不变,最后生成这样的字符串
String ret = "1,4,10,12,13,7,8,9"我用了HashSet的add方法,重复的删除了,可是改变了字符串的排序。
我想删除重复的字符串,但是排序不变,最后生成这样的字符串
String ret = "1,4,10,12,13,7,8,9"我用了HashSet的add方法,重复的删除了,可是改变了字符串的排序。
public class TestString {
private static String removeString(String str)
{
Set<String> mLinkedSet = new LinkedHashSet<String>();
String[] strArray = str.split(",");
StringBuffer sb = new StringBuffer(); for (int i = 0; i < strArray.length; i++)
{
if (!mLinkedSet.contains(strArray[i]))
{
mLinkedSet.add(strArray[i]);
sb.append(strArray[i] + ",");
}
}
System.out.println(mLinkedSet);
return sb.toString().substring(0, sb.toString().length() - 1);
}
public static void main(String[] args) {
String aaa=removeString("0,1,4,10,12,13,0,1,7,8,0,1,7,9");
System.out.println(aaa);
}
String str2 = "0,1,4,10,12,13,0,1,7,8,0,1,7,9";
String num[] = new String[10];
String ret = "";
num = str2.split("\\,",0);
List<String> list = new ArrayList<String>();
for(String s : num) {
Boolean bool = true;
for(String l : list) {
if(l.equals(s)) {
bool = false;
break;
}
}
if(bool) {
list.add(s);
}
}
for(String s : list) {
ret = ret + "," + s;
}
ret = ret.substring(1, ret.length());
System.out.println(ret);
String str="1,2,3,4,5,6,7,8,9,4,5,8,5,6,6,6,1";
Map m=new Hashtable();
String[] a=str.split(",");
if(a!=null){
for(int i=0;i<a.length;i++){
if(m.get(a[i])!=null){
int s=-1;
try{s=Integer.parseInt(m.get(a[i])+"");}catch(Exception e){}
m.put(a[i], s+1);
}
else{
m.put(a[i], 1);
}
}
}
for(int i=0;i<m.size();i++){
System.out.println(a[i]+"##"+m.get(a[i]));
}
}
String[] strArray = sb.toString().split(",");
for (int i=0; i<strArray.length; i++) {
int lastIndex = sb.lastIndexOf(strArray[i]);
while (sb.indexOf(strArray[i]) != lastIndex && sb.charAt(lastIndex-1) ==',' && sb.charAt(lastIndex + strArray[i].length()) ==',') {
sb.delete(lastIndex-1, lastIndex + strArray[i].length());
lastIndex = sb.lastIndexOf(strArray[i]);
}
}
System.out.println(sb);
楼主【10yue】截止到2008-07-08 12:00:20的历史汇总数据(不包括此帖):
发帖的总数量:9 发帖的总分数:330 每贴平均分数:36
回帖的总数量:16 得分贴总数量:6 回帖的得分率:37%
结贴的总数量:9 结贴的总分数:330
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
String str = "0,1,4,10,12,13,0,1,7,8,0,1,7,9";
LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
for(String str1 : str.split(",")) map.put(str1, str1);
for(String str2 : map.values()) System.out.println(str2);
String str = "0,1,4,10,12,13,0,1,7,8,0,1,7,9";
String _s1 = ","+str;
String _s2 = _s1.replaceAll(",0","");
return _s2.substring(1,_s2.length);
String str = "0,1,4,10,12,13,0,1,7,8,0,1,7,9";
StringBuilder sb = new StringBuilder(",");
for(String str1 : str.split(",")) {
String pattern = ","+str1+",";
if(sb.indexOf(pattern)==-1) sb.append(str1).append(",");
}
System.out.println(sb.toString());
import java.util.LinkedHashMap;
class Test{
public static void main(String[] args) {
String str = "0,1,4,10,12,13,0,1,7,8,0,1,7,9";
StringBuffer sb = new StringBuffer();
LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
for(String tempStr : str.split(","))
map.put(tempStr, tempStr);
for(String tempStr : map.values())
sb.append(tempStr+",");
System.out.println(sb.substring(0,sb.length()-1));
}
}
不明白哦,HashSet 怎么可能会把重复的给删除了呢?Set 是会保留一个的啊,不会删的啊。我感觉你生成的 ret 有些莫名其妙str = "0,1,4,10,12,13,0,1,7,8,0,1,7,9"
ret = "1,4,10,12,13,7,8,9"我不是很明白 0 为什么没有了?
第一,我是没有看明白lz要做什么。是把重复的元素全部删除?(例如0,有重复的那么0这个元素就不出现在字符串中。)还是把重复的删除呢?(例如,0,有重复的那么我把后来出现的0删除掉,字符串中会保留一个0)如果是前者 只能一个元素一个元素的遍历了
如果是后者 用linkedhashset 或者map什么的就可以解决了