永发信息网

java解析用分号隔开的字符串并去掉相同字符

答案:6  悬赏:0  手机版
解决时间 2021-03-28 12:28
  • 提问者网友:心牵心
  • 2021-03-27 15:28
java解析用分号隔开的字符串并去掉相同字符
最佳答案
  • 五星知识达人网友:归鹤鸣
  • 2021-03-27 16:02
public static void check(String str){
String[] strArr = str.split(",");
int[] checkArr = new int[strArr.length];
for(int i=0;i for(int j =0;j if(j!=i&&strArr[i].equals(strArr[j])){
checkArr[i] = 1;
break;
}
}
}
List list = new ArrayList() ;
int count = 0;
for(int i=0;i if(checkArr[i]==0){
list.add(count, strArr[i]);
count++;
}
}
for(int i=0;i System.out.print(list.get(i));
}
}
全部回答
  • 1楼网友:山河有幸埋战骨
  • 2021-03-27 20:13
import java.util.ArrayList;
import java.util.HashMap;
public class Test {
public static void main(String[] args){
String str ="123;456;123;789;12;54;12;456";
HashMap map=new HashMap();//用来保存字符串是否重复的信息
ArrayList result=new ArrayList();//保存结果的list
for(String s:str.split(";"))
if(map.containsKey(s))//字符串重复,将值设为true
map.put(s, true);
else
map.put(s, false);//字符串无重复,将值设为false
for(String s:map.keySet())//遍历map
if(!map.get(s))
result.add(s);//根据重复与否,将无重复字符串加入结果list
System.out.println(result);//打印结果
}
}
  • 2楼网友:长青诗
  • 2021-03-27 18:35
public static void main(String[] args) {
String s="123;456;123;789;12;54;12;456";//字符串
String ss[]=s.split(";");//将s字符串以;的形式隔开存到ss[]这个数组中
String str="";//准备将SS数组中的第i个数存到这个字符串中i为下面的循环
String strs="";="";//准备将SS数组中的第j个数存到这个字符串中j为下面的循环
String re="";//获得无重复的结果将存入这个字符串中
for(int i=0;i str=ss[i];//取出数组中第i个
for(int j=0;j strs=ss[j];
if(str.equals(strs) && i!=j){//取出第J个,J从1开始,假如I=0时,str=123,在这里将会
//比较123其它的都相比一次i!=j表示和他相比较的数不是他自己
break;
}
else{
if(j==ss.length-1){
re+=","+str;
}
}

}
}
System.out.println(re);//这就是结果
}
  • 3楼网友:孤老序
  • 2021-03-27 17:13
public static void main(String[] args) {
String resource = "a;b;c;d;ab;cd;wre43;42;424;24;23;23;abc;abcd;a;b;34;wer;a;f;rwrw;fdsma;fsd;fds;fds;fa;fa";// 源字符串
System.out.println(Arrays.toString(toDeleteRepeat(resource)));
}
public static String[] toDeleteRepeat(String str) {
String split = ";"; // 设分隔符
str = split + str + split;
String[] tokens = str.split(split);
for (String t : tokens) {
if (t.equals(""))
continue;
if (str.matches("(" + t + split + ".*){2,}"))
str = str.substring(str.indexOf(t + split)).replace(
split + t + split, split);
else if (str.matches("(.*" + split + t + split + t + split
+ ".*){1,}"))
str = str.replace(split + t + split + t + split, ";");
else if (str.matches("(.*" + split + t + split + ".*){2,}"))
str = str.replace(split + t + split, split);
}
str = str.substring(1);
return str.split(split); // 返回不重复的数组字符
}
//以上方法比多次用循环效率高
  • 4楼网友:动情书生
  • 2021-03-27 16:48
赞同optilixue的想法
大量数据的比较的时候Set比List快多了
1万条数据的情况下
Set用时83ms
List要用828ms
因为List是线性检索。
下面的代码应该是最短了吧
package test;
import java.util.HashSet;
import java.util.Set;
public class test {
public static void main(String[] args) {
String str = "123;456;123;789;12;54;12;456";
String[] strs = str.split(";");
Set result = new HashSet();
for (String tmp : strs) {
// 若已存在则删除
if (result.add(tmp) == false) {
result.remove(tmp);
}
}
// 这里得到的是Set
System.out.println(result);
}
}
  • 5楼网友:迟山
  • 2021-03-27 16:41
学习了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯