java怎么去除两个字符串中相同的字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么去除两个字符串中相同的字符相关的知识,希望对你有一定的参考价值。

import java.util.*;
import java.lang.*;
public class StringCount
int i,j;
ArrayList<String> list= new ArrayList<String>();
public void ss()

String str="This is a String";
String sbr="isaring";
Set set= new HashSet();
for(i=0;i<str.length();i++)
for(j=0;j<sbr.length();j++)

if(sbr.charAt(j)==str.charAt(i))


list.add(sbr.substring(j,j+1));



for(String x:list)

set.add(x);
System.out.print(" "+set);




public static void main(String[] args)

StringCount a= new StringCount();
a.ss();




运行的结果是: [i] [i] [s, i] [s, i] [s, i] [s, i] [s, a, i] [s, r, a, i] [s, r, a, i] [s, r, a, i] [s, r, a, n, i] [g, s, r, a, n, i]
不知道怎么结果是这样,求解释。。还有怎么正确的去除重复的字符。

set 本身就可以去除相同的元素 ! 没有必要用list

import java.util.*;
public class Test 
public static void main(String[] args)
String str="This is a String";
String sbr="isaring";
Set set = new HashSet();
for(char c:str.toCharArray())

set.add(c);

for(char c:sbr.toCharArray())

set.add(c);

System.out.println(set);



[g, T,  , t, s, r, S, a, n, h, i]


你的代码里面:list.add(sbr.substring(j,j+1));
我觉得应该是list.add(sbr.charAt(j));//把相同的加进来,然后再去除这些相同的就是不同的了

参考技术A public static void main(String[] args)
String str="r1qwerty";
String str1="qqwer1z";
String[] check = new test01().check(str,str1);

System.out.println("str: "+check[0]);
System.out.println("str1: "+check[1]);


public String[] check(String str,String str1)
char[] c = str.toCharArray();
char[] c1 = str1.toCharArray();
StringBuffer s=new StringBuffer();
StringBuffer s1=new StringBuffer();
for(int i=0;i<c.length;i++)
for(int j=0;j<c1.length;j++)
if(c[i]==(c1[j]))
str=str.replaceAll(String.valueOf(c[i]), "");
str1=str1.replaceAll(String.valueOf(c[i]), "");



return new String[]str,str1;

这个是刚写的,应该没有问题追问

能再按我的代码写个怎么选取两个字符串相同的字符吗?而且能解释下我的代码运行结果为什么是那样子的呢。。。谢谢=。=小菜鸟求教。。。

追答

如果按照你的方式的话 public void ss()这个方法返回个set,你的set中就是相同的字符;你在循环里进行输出,所以会输出好几次的,拿到外面,也就是
for(String x:list)
set.add(x);

System.out.print(" "+set);
不就很直观的看出相同的字符了么

本回答被提问者采纳
参考技术B 放Map里面,自动去掉

Map<Char, Char>追问

不太清楚还是。能再具体点吗?

用Java中的ArrayList实现:去除集合中字符串的重复值(字符串的内容相同)

public class Test
public static void main(String[] args)
List<String> list = new ArrayList<String>();
list.add("测试1");
list.add("测试2");
list.add("测试3");
list.add("测试4");
list.add("测试4");
list.add("测试2");
list.add("测试5");
System.out.println("没有去重前的数据为>>>"+list.toString());

for(int i = 0;i<list.size()-1;i++)
for(int j = list.size()-1;j>i;j--)
if(list.get(j).equals(list.get(i)))
list.remove(j);



System.out.println("去重后的数据为>>>"+list.toString());


希望能帮到你!
参考技术A lz 你好 这个就是一个比较简单的算法题 , 你可以自己写 但是用Java语言就不需要了 , Java自带泛型相关的类 , 很有用 其中TreeSet集合能自动识别添加的是否重复 , 重复的将不会添加 , 很方便 以下是实现代码: import java.util.List;import java追问

?没看到代码呢

参考技术B 把内容先放入set 然后再放回去追问

能把代码写出来吗?谢谢

以上是关于java怎么去除两个字符串中相同的字符的主要内容,如果未能解决你的问题,请参考以下文章

用Java中的ArrayList实现:去除集合中字符串的重复值(字符串的内容相同)

JAVA 删除字符串中指定的字符

JAVA 删除字符串中指定的字符

java如何去除字符串中重复的字符

java第十四天

JS怎么去除字符串中的所有中括号