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

例如123;456;123;789;12;54;12;456;
最后希望得到: 789 54 这两个字符串

用java怎么做??
希望能给出详细点的代码,基本的思路我还是知道的,难在具体实现上了,谢谢

第1个回答  2010-08-05
楼主真慷慨,给这么多分,我的代码简单给你实现了你所需要的,不过你还是把分给需要的人吧,祝楼主学习进步。。
public static void main(String[] args){
String resource="123;456;123;789;12;54;12;456;";//源字符串
String[] array=resource.split(";");//按照分号分隔
List list=new ArrayList();//存放最终字符串的容器
for(int i=0;i<array.length;i++){
String str=(String)array[i];
int canPut=-1;//list索引
for(int j=0;j<list.size();j++){
String s=(String)list.get(j);
if(s.indexOf(str)>=0 || str.indexOf(s)>=0){
canPut=j;
break;
}
}
if(canPut==-1){
list.add(str);//加入
}else{
list.remove(canPut);//移除
}
}
//最终效果
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
第2个回答  2010-08-05
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<ss.length;i++){
str=ss[i];//取出数组中第i个
for(int j=0;j<ss.length;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个回答  推荐于2016-04-14
public static void check(String str){
String[] strArr = str.split(",");
int[] checkArr = new int[strArr.length];
for(int i=0;i<strArr.length;i++){
for(int j =0;j<strArr.length;j++){
if(j!=i&&strArr[i].equals(strArr[j])){
checkArr[i] = 1;
break;
}
}
}
List<String> list = new ArrayList<String>() ;
int count = 0;
for(int i=0;i<checkArr.length;i++){
if(checkArr[i]==0){
list.add(count, strArr[i]);
count++;
}
}
for(int i=0;i<list.size();i++){
System.out.print(list.get(i));
}
}本回答被提问者采纳
第4个回答  2010-08-05
赞同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<String> result = new HashSet<String>();
for (String tmp : strs) {
// 若已存在则删除
if (result.add(tmp) == false) {
result.remove(tmp);
}
}
// 这里得到的是Set
System.out.println(result);
}
}
第5个回答  2010-08-05
个人觉得楼上的有点小问题,如果是重复出现奇数次就会有问题
String []array = str.split(";")
然后遍历数组
ArrayList list =new ArrayList();
ArrayList listdrop =new ArrayList();
for(String tem:array){
if(!listdrop.contains(tem))//判断是否重复出现过
{
if(list.contains(tem))//判断是否出现过
{
list.remove(tem);//删除重复数据
listdrop.add(tem);//加入重复数据数组
}
else
{
list.add(tem);//加入结果数组
}
}
}

system.out.println(list);

java解析用分号隔开的字符串并去掉相同字符
public static void main(String[] args) { String str = "123;456;123;789;12;54;12;456;";\/\/转化为数组 String[] items = str.split(";");List cache = new ArrayList();for(int i=0;i<items.length;i++){ String item = items[i];int count = 0;for(int j=0;j<items....

...因为最后一小段数据中间也有逗号,怎么用Java解析成以分号为...
然后用字符串的替换功能完成 str = str.replace(",",";")这样既可以完成你要的数据

我想用split(";")来分隔我的Java代码, 但是若是字符串中有`;`我该怎...
对tmp字符串按分号进行分割,将不为空的结果添加到结果集中String[] stArr = tmp.split(";");for (String s : stArr) {if (s.length() > 0) {result.add(s);}}} else {\/\/发现双引号转义符的右转义符,不进行分割,将tmp字符串拼接到结果集的最后一个字符串中String end = result.get...

java代码怎么将取到的值去重后合并显示,中间用分号隔开
import java.util.Set;import org.apache.commons.lang3.StringUtils;public class Test { public static void main(String[] args) { List<String> list1 = new ArrayList<String>(Arrays.asList("1", "2", "3"));List<String> list2 = new ArrayList<String>(Arrays.asList("2", "3",...

java分号“”中的内容怎么换行
在字符串中每隔一段加入\\n强制换行,可以实现换行效果。JOptionPane.showMessageDialog( null,"规则内容规则内容规则内容规则内容\\n规则内容规则内容规则内容规则内容规则\\n内容规则内容规则内容规则内容规则内容规\\n则内容规则内容规则内容规则内容规则内容规\\n则内容规则内容规则内容规则内容","说明",JOptionPan...

java String s = "1,4,6;3,8;9,2,0,5"; 其中分号作为二维数组的分割,逗 ...
public class Demo{ public static void main(String[] args) throws Exception { String s = "1,4,6;3,8;9,2,0,5"; String[] str_Arr = s.split(";"); int[][] arr = new int[str_Arr.length][4];\/\/这个地方首先判断一下长度,我写死了 for(int i = 0 ;...

利用Java求出有一串身份证的数字,用分号隔开,提取每个身份证号,统计...
String card[]=new String[0];\/\/记录身份证号码 String filePath = "D:\/aa.txt";\/\/假设你D盘下有一个aa.txt文件中存放着身份证号码 FileInputStream fin;try { fin = new FileInputStream(filePath);\/\/从filePath中获得输入字节 BufferedReader buffReader = new BufferedReader(new InputStream...

java中如何对一个字符串按逗号和分号分割成数组?
用java.util.StringTokenizer这个类来分隔比较方便,用split一次分不开需要二层循环才能完成。下面是用StringTokenizer分隔字符串的小例子,你看看。String str = "abc,def;gh,ij;k;lm,no,p;qr,st";StringTokenizer st = new StringTokenizer(str,",;");while(st.hasMoreTokens() ){ System.out....

java中如何用split对一个字符串按逗号和分号分割成数组
import java.util.Arrays;public class Day21_A {public static void main(String[] args) {String[] arr=new String("张三,李四,王五;赵六").split("[\\\\,\\\\;]");System.out.println(Arrays.toString(arr));}}

学生必看Java常见的错误及避免方法
通常是因为缺少分号或右括号。 通常,此错误消息不会精确问题的确切位置,为了找到错误:确保所有的左括号都有一个对应的右括号。 在查看指示的Java代码行之前顺便看看行。此eJava软件错误没有被编译器注意到,直到在代码中更深层次地看。 有时一个字符,如一个左括号,并不应该放在Java代码的原先位置。所以开发人员没...

相似回答