String str[]={"asd","1sdf","sfe","asd","ddd","sss","ddd","sss","wer","erw"};也就是如何将这个数组中的不同值取出来并保存。这个str的长度并不确定。每取出一个值先判断是否相同,相同的放在一起,不同的有多少个则创建多少个数组保存。

解决方案 »

  1.   

    你是想获取这个数组里面有多少不同的值和相同值出现的次数吗?如过是的,你用个一个Map就可以了,key放你数组里面的值,value放出现的次数。循环数组判断值是否在Map里面,如果在就把Map里面的value+1,如果不在就把这个数加如Map里面
      

  2.   

    不同的有多少个则创建多少个数组保存?不是放在一个数组里就可以保存了么?是不是你想把str[]里的相同的元素放在一个数组中,不同的元素放在另外一个数组中
      

  3.   

    取出以后每个数组里保存的值是相同的。
    就像这样,a1={asd,asd};
              a2={1sdf};
              a3={sfe};
              a4={ddd};要达到这样的目的,如何动态的创建数组a1到an
      

  4.   

    晕,这什么业务啊,像a2,a3,a4之类的都只有一个元素也用存成数组?
      

  5.   

    是正解
    楼主你的a1就是map("asd",2)
            a2就是map("1sdf",1)
    等等
    如果你单纯的需要数组的话
    用map<String,String[]>也行
    不过你既然知道了数字比如("asd",2)
    在自己生成长度为2的数组不是更好么?
      

  6.   

    a2,a3,a4这只是例子,不止一个值啊
      

  7.   

    你这例子太难懂了你能不能举个具体点的,
    比如
    String str[]={"asd","1sdf","sfe","asd","ddd","sss","ddd","sss","wer","erw"};最后你想得到什么样的结果。
      

  8.   

    最后结果应该是a1={asd,asd};
    a2={1sdf};
    a3={sfe};
    a4={ddd,ddd};
    a5={sss,sss};
    a6={wer};
    a7={erw};
    字符串数组str的长度不确定,数组a1到an的个数和值也都不确定。我的目的是如何循环创建a1到an这些数组。数组里面的值是无关紧要的。
      

  9.   

    给你一个笨办法。String str[]={"asd","1sdf","sfe","asd","ddd","sss","ddd","sss","wer","erw"};
    List<String> list = new ArrayList<String>();
    Map<String, Integer> map = new HashMap<String, Integer>();
    for(int i =0; i < str.length; i++){
    if(!list.contains(str[i])){
    list.add(str[i]);
    map.put(str[i], 1);
    }else{
    int k = map.get(str[i]);
    map.put(str[i], k + 1);
    }
    }然后有多少个map就是有多少个数组,map的value就是表示这个数组值出现了多少次。
      

  10.   

    总觉得这需求好怪。
    打印结果:
    [1sdf]
    [asd, asd]
    [ddd, ddd]
    [erw]
    [sfe]
    [sss, sss]
    [wer]
    public static void main(String[] args) { String str[] = { "asd", "1sdf", "sfe", "asd", "ddd", "sss", "ddd", "sss", "wer", "erw" };
    Set<String> set = new HashSet<String>();
    Map<String, Integer> map = new TreeMap<String, Integer>(); for (String s : str) {
    if (set.add(s)) {
    map.put(s, 1);
    } else {
    map.put(s, map.get(s) + 1);
    }
    } int size = map.size();
    int i = 0;
    String[][] result = new String[size][]; for (String key : map.keySet()) {
    if (map.get(key) == 1) {
    result[i] = new String[] { key };
    } else {
    result[i] = new String[map.get(key)];
    for (int j = 0; j < map.get(key); j++) {
    result[i][j] = key;
    }
    }
    i++;
    } for (String[] s : result) {
    System.out.println(Arrays.toString(s));
    }
    }
      

  11.   

    public class Array{
        
      String str[]={"asd","1sdf","sfe","asd","ddd","sss","ddd","sss","wer","erw"};   public void equalsArr(Vector<String[]> vt, String str){      for(int i=0; i<vt.size(); i++){
             if(vt.elementAt(i)[0].equals(str)){
              vt.add(i, addData(vt.elementAt(i), str));
                 return;
             }
         }
         vt.add(new String[]{str});
      }
       
    //增加数据
    public String[] addData(String[] cc, String str){
    String ss[] = new String[cc.length+1]; 
    System.arraycopy(cc, 0, ss, 0, cc.length);
    ss[ss.length-1] = str;
    return ss;
    }  public static void main(String str[]){      Vector<String[]> cc = new Vector<String[]>();   
          Array array = new Array();
          for(int i=0; i<str.length; i++){
    array.equalsArr(cc, str[i]);
           }}
    在JAVA里面不能动态改变数组的长度,初始化时数组是多长就永远是多长,除非你重新给它new一个
    动态的创建数组方法是:new String[5]; 或者 new String[]{"ads"};
    数组创建出来还要保存他的引用地址,一般我们平常都是String str[] = new String[5]; 这样就是把地址给赋给了str[]  相当于指针
    我这里是每创建一个数组都把他的地址放到Vector里面了,