java中数组String array{a,b,c,d,c,d,e}如何能把字段相同的分到另外的数组中

把上面的就好比{a} {b} {c,c} {d,d}{e} 分成五个数组 急需 求高人帮忙 !
不是说每一个值就是一个数组 我只是要把原来数组相同的字段放到单独的一个数组里面 在比如{a,b,c,a,a,a,a,}那么我新生成的数组就是三个 {a,a,a,a,a}{b} {c}

当然前提是 你不知道数组里面具体是什么 只是叫判断把具有 有相同的字段就放到一个数组 没有的话就单独放一个数组 不要用
for(int i=0 ;i<array.length;i++){
if(array[i]==a){}
if(array[i]==b){}
.....
}
谢谢.....在线 等!!!帮帮忙

  数组中提取相同的字母,可以使用string的charat方法遍历字母,放到一个string中,找到之后删除掉这个字母,接着遍历下一个,示例如下:

package test1;
import java.util.Random;
public class ArrayTest {
public static void main(String[] args) {
//1、构建一个数组
String[] array={"a","b","c","d","c","d","e"};
//2、将数组中值的遍历成一个String
String str="";
for(int i=0;i<array.length;i++){
str+=array[i];
}
System.out.println("strlength="+str);//打印出str
//3、为了能够实现需求,构建一个StringBuffer,方便使用,用法可以在jdk api找查找
StringBuffer sbu=new StringBuffer(str);//用str构建一个StringBuffer
String flag[][]=new String[sbu.length()][2];//这里只是定一个固定长的二维数组,用来存放遍历到得字母和 å‡ºçŽ°çš„次数,比如(a,1)表示a出现了1次,只有在每个字母都不重复下才能装满
for(int j=0;j<sbu.length();j++){
    flag[j][0]=sbu.charAt(j)+"";//二维数字第一列放字母
    flag[j][1]=1+"";////二维数字第二列放出现次数,至少会出现一次
for(int k=j+1;k<sbu.length();k++){
if(sbu.charAt(j)==sbu.charAt(k)){
sbu.deleteCharAt(k);//找到相同的字母,从StringBuffer中删除,这样下次就不会遍历它
flag[j][1]=Integer.parseInt(flag[j][1])+1+"";//长度加1
}
}
}
String a="{";
for(int i=0;i<flag.length;i++){
  if(flag[i][1]!=null){//上面说的flag二维不一定方面,所以判断一下再取值
  String s=flag[i][0];//出现的字母
  int num=Integer.parseInt(flag[i][1]);//出现的次数
  System.out.println("字母:"+s+"出现了:"+num+"次");
  int j=0;
  for( j=0;j<num;j++){
  a+=s;   
  }
  if(j+1==num){
  a+="}";
  }else{
  a+="}{";
  }
  }
}
    System.out.println("结果是:"+a);
}
  //说明一下,可以根据你自己的需要装
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-10
package test1;
import java.util.Random;
/*
运行结果如下
strlength=abcdcde
字母:a出现了:1次
字母:b出现了:1次
字母:c出现了:2次
字母:d出现了:2次
字母:e出现了:1次
结果是:{a}{b}{cc}{dd}{e}*/
public class ArrayTest {
/**
* java中数组String array{a,b,c,d,c,d,e}如何能把字段相同的分到另外的数组中
* 把上面的就好比{a} {b} {c,c} {d,d}{e} 分成五个数组 急需 求高人帮忙 !
*/
public static void main(String[] args) {
//1、构建一个数组
String[] array={"a","b","c","d","c","d","e"};
//2、将数组中值的遍历成一个String
String str="";
for(int i=0;i<array.length;i++){
str+=array[i];
}
System.out.println("strlength="+str);//打印出str
//3、为了能够实现需求,构建一个StringBuffer,方便使用,用法可以在JDK API找查找
StringBuffer sbu=new StringBuffer(str);//用str构建一个StringBuffer
String flag[][]=new String[sbu.length()][2];//这里只是定一个固定长的二维数组,用来存放遍历到得字母和 出现的次数,比如(a,1)表示a出现了1次,只有在每个字母都不重复下才能装满
for(int j=0;j<sbu.length();j++){
flag[j][0]=sbu.charAt(j)+"";//二维数字第一列放字母
flag[j][1]=1+"";////二维数字第二列放出现次数,至少会出现一次
for(int k=j+1;k<sbu.length();k++){
if(sbu.charAt(j)==sbu.charAt(k)){
sbu.deleteCharAt(k);//找到相同的字母,从StringBuffer中删除,这样下次就不会遍历它
flag[j][1]=Integer.parseInt(flag[j][1])+1+"";//长度加1
}
}
}
String a="{";
for(int i=0;i<flag.length;i++){
if(flag[i][1]!=null){//上面说的flag二维不一定方面,所以判断一下再取值
String s=flag[i][0];//出现的字母
int num=Integer.parseInt(flag[i][1]);//出现的次数
System.out.println("字母:"+s+"出现了:"+num+"次");
int j=0;
for( j=0;j<num;j++){
a+=s;
}
if(j+1==num){
a+="}";
}else{
a+="}{";
}
}
}
System.out.println("结果是:"+a);
}
//说明一下,可以根据你自己的需要装
}本回答被提问者采纳
第2个回答  2015-08-25
1. 初始化3个数组
2. 用System.arraycopy函数对其进行分析
3. 代码如下:

public class Yugi {
    public static void main(String[] args){
        String[] array = {"a","b","c","d","c","d","e"};
        String[] other = new String[0];
        String[] orig = new String[0];
        String tmp = ",";
        for(int i = 0; i < array.length; i++){
            String a = array[i];
            if(tmp.indexOf("," + a + ",") == -1){
                tmp += a + ",";
                String[] cloned = new String[orig.length + 1];
                System.arraycopy(orig, 0, cloned, 0, orig.length);
                cloned[cloned.length - 1] = a;
                orig = cloned;
            }else{
                String[] cloned = new String[other.length + 1];
                System.arraycopy(other, 0, cloned, 0, other.length);
                cloned[cloned.length - 1] = a;
                other = cloned;
            }
        }
        for(String o : orig){
            System.out.println(o);
        }
        for(String o : other){
            System.out.println(o);
        }
    }
}

本回答被网友采纳
第3个回答  2011-11-10
实现这种算法很简单.
给你一个思路,自己动手试试:
现有数组list,其值动态改变,也就是说未知,假设里面保存的是String类型的字符串;
如下:
Set<String> set = new HashSet<String>();
for(String s : list) //遍历list
set.add(s1); //将list中的值存放进set里面,去掉重复;思考:自己分析下面程序步骤,为什么要去掉重复?
for(String s1 : set){ //遍历set
System.out.println(); //每遍历一次set值,做换行操作.
for(String s2 : list) //遍历list
if(s1.equals(s2)){ //比较set和list中的值,获取到与s1值相同的s2
//s2就是获取到的值.将s2放入数组,即可得到最终所需要的结果.
System.out.print(s2 + " ");//输出s2
}
}
第4个回答  2011-11-10
利用set的唯一性很好解决
import java.util.Set;
import java.util.TreeSet;

public class BB {

public static void main(String[] args) {

String[] ary = {"a", "b", "c", "d", "c", "d","e"};

Set<String> set = new TreeSet<String>();

for(int i = 0; i < ary.length; i++){
set.add(ary[i]);
}

String[] newAry = set.toArray(new String[0]);

for(int i = 0; i < newAry.length; i++){
System.out.println(newAry[i]);
}

}

}
---------------testing
a
b
c
d
e追问

不是的 不是说每一个值就是一个数组 我只是要把原来数组相同的字段放到单独的一个数组里面 {a,b,c,a,a,a,a,}那么我新生成的数组就是三个 {a,a,a,a,a}{b} {c}

相似回答