java 字符串数组如何去掉相同元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 字符串数组如何去掉相同元素相关的知识,希望对你有一定的参考价值。
string[] a="aabccc","bbdf","ddeeg"
只要一个字母出现在两个以上的字符串中 就把它去掉
最后变成 aaccc,f,eeg
for(int i = 0 ;i<a.size();i++)
Object obj = a[i];
if(a.contains(obj))
a.remove(i);
追问
我运行了一下 得出来是bbdf
参考技术A public static void main(String[] args)String[] a="aabccc","bbdf","ddeeg";
String[] result=new String[a.length];
Set<String> uniqChar = new HashSet<String>();
Map<String, Integer> timeMap = new HashMap<String, Integer>();
//使用set存放出现的所有字母
for(String aa:a)
for(int j=0;j<aa.length();j++)
if(!uniqChar.contains(aa.charAt(j)))
uniqChar.add(aa.charAt(j)+"");
//使用map记录每个字母在多少个字符串中出现
for(String s:uniqChar)
int times = 0;
for(String aa:a)
if(aa.contains(s))
times++;
timeMap.put(s, times);
//过滤掉出现次数大于1次的字母
for(String key:timeMap.keySet())
//System.out.println("key:"+key);
if(timeMap.get(key) > 1)
//System.out.println("big than one key:"+key);
for(int i=0;i<a.length;i++)
a[i] = a[i].replace(key,"");
System.out.println(timeMap);
for(String aa:a)
System.out.print(aa);
本回答被提问者采纳
java中 如何统计一段字符串中相同字符的个数
比如说 在框里输入AABBCC 点确定 算出:a=2 b=2 c=2 本人是java新人 希望提供一些容易理解的代码!谢谢 在线等!:)
通过循环遍历字符串,然后一个个的比较,记下相同字符的个数就行了。代码如下:
import java.util.Scanner;import java.util.TreeMap;
/**
* 从键盘输入16位长整数,编程统计每个数字出现的个数
* @author young
*
*/
public class CharMapDemo
// 统计数字或者字符出现的次数
public static TreeMap<Character, Integer> Pross(String str)
char[] charArray = str.toCharArray();
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
for (int x = 0; x < charArray.length; x++)
if (!tm.containsKey(charArray[x]))
tm.put(charArray[x], 1);
else
int count = tm.get(charArray[x]) + 1;
tm.put(charArray[x], count);
return tm;
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
// System.out.println("请输入一个长整数:");
// int temp = sc.nextInt();
// String str = String.valueOf(temp);
// TreeMap<Character, Integer> tm = Pross(str);
// System.out.println(tm);
System.out.println("请输入一个字符串:");
String str = sc.nextLine();
TreeMap<Character, Integer> tm = Pross(str);
System.out.println(tm);
参考技术A
public class CharCount
public static void main(String[] args)
int count = 0;
String str = "gfjsjgperjtpojewrjopeqjwrio34rengflkajsaljfrajfasnflanfla";
for(int i = 0; i < str.length(); i++)
if(str.charAt(i)=='j')
count++;
System.out.println(count);
扩展资料:
Java常见字符:
int 型
常量:
123,6000(十进制)|| 077(八进制)|| 0x3ABC(十六进制)
声明:
int x =12 ;
占用字节内存:4
取值范围:-2^31--2^31-1
byte 型
常量:
不存在
声明:
byte x = -12 ;
占用字节内存:1
取值范围:-2^7--2^7-1
short 型
常量:
不存在
声明:
short x = 12;
占用字节内存:2
取值范围:-2^15--2^15-1
long 型
常量:
用后缀 L 来表示,如:108L等
声明:
long width = 12L;
占用字节内存:8
取值范围:-2^63--2^63-1
参考资料来源:百度百科--Java (计算机编程语言)
参考技术B import java.util.Iterator;import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
/**
*
* @author Administrator
*/
public class CharacterCounts
public static void main(String[] args)
Scanner input = new Scanner(System.in); //使用Scanner接受从键盘的输入
System.out.println("请输入一段字符:");
String str = input.nextLine(); //从键盘接受输入的数据
Map<Character,Integer> tree = new TreeMap<Character,Integer>();//利用TreeMap来保存某个字符出现的次数
for(int i=0;i<str.length();i++)
char ch = str.charAt(i);
if(!tree.containsKey(ch)) //如果第一次出现,则初始为1
tree.put(ch, 1);
else
int auto = tree.get(ch)+1; //如果在容器中已存在,则在原来的基础上+1
tree.put(ch, auto);
// 使用Iterator,方便遍历输出
Iterator<Character> iter = tree.keySet().iterator();
while(iter.hasNext())
//获得字符对象信息
char temp = iter.next();
//输出每个字符出现的次数
System.out.println("字母'"+temp+"' 出现"+tree.get(temp)+"次。");
其实和你说的差不多,,不过是我以前做的,写复杂了,,所以将就用把,, 参考技术C //就爱复杂,用两种方法实现:
//Similar.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Similar
public static void main(String[] args)
String s = "aabbbbcccccccAAA";
//map
System.out.println("map:");
Map map = same(s);
Object[] keys = map.keySet().toArray();
Arrays.sort(keys);
for(int i=0; i<keys.length; i++)
System.out.println(keys[i]+"="+map.get(keys[i]));
//list
System.out.println("\nlist:");
List list = getSimilar(s);
Collections.sort(list);
for(int i=0; i<list.size(); i++)
System.out.println(list.get(i));
//用Map来处理
public static Map same(String s)
Map map = new HashMap();
for(int i=0; i<s.length(); i++)
Character c = new Character(s.charAt(i));
if(map.containsKey(c))
Integer value = (Integer)map.get(c);
map.put(c,new Integer(value.intValue()+1));
else
map.put(c,new Integer(1));
return map;
//用List+对象来处理
public static List getSimilar(String src)
List list = new ArrayList();
for(int i=0; i<src.length(); i++)
CI kv = new CI();
kv.c=src.charAt(i);
if(list.contains(kv))
int index = list.indexOf(kv);
((CI)list.get(index)).i++;
else
list.add(kv);
return list;
//
public static class CI implements Comparable
public char c;//出现的字符
public int i;//出现的字符的次数
public CI()
i=1;
public boolean equals(Object o)
return ((CI)o).c==this.c;
public String toString()
return c+"="+i;
public int compareTo(Object o)
return this.c-((CI)o).c;
参考技术D public class CharCount
public static void main(String[] args)
int count = 0;
String str = "gfjsjgperjtpojewrjopeqjwrio34rengflkajsaljfrajfasnflanfla";
for(int i = 0; i < str.length(); i++)
if(str.charAt(i)=='j')
count++;
System.out.println(count);
这个问题有楼上那么复杂嘛,这只是给你个思路。怎么做自己想哟本回答被提问者采纳
以上是关于java 字符串数组如何去掉相同元素的主要内容,如果未能解决你的问题,请参考以下文章