想请教下关于字符串数组元素相互比较然后进行统计的问题. 我有个String类型的数组,称为str,假定有6个元素,现赋值如下:
str[0]="apple";
str[1]="orange";
str[2]="apple";
str[3]="banana";
str[4]="apple";
str[5]="orange";
如果我们把值相同的元素记数为1次,对上述数组各元素进行比较和统计,求共有几种不同的水果(当然根据上面的是3种)。我现在对如何实现这样的逻辑和对元素值比较的应用感到比较困惑,不知大家能否解释一下,说说该用怎么样的逻辑比较好,最好的话能用代码说明一下,感谢大家lol!

解决方案 »

  1.   

    放到  Set 里面.有几个就是几个啊. 
      

  2.   


    String[] str = new String[6];
    str[0]="apple";
    str[1]="orange";
    str[2]="apple";
    str[3]="banana";
    str[4]="apple";
    str[5]="orange"; 

    Set<String> set = new HashSet<String>();
    for(String st:str)
    set.add(st);
    System.out.println("共有" +set.size()+"种水果");
    }
      

  3.   

    如果前提是不使用set呢,就是纯粹自己比较元素间值,应该怎么比较呢? 假设说在C环境下面
    我自己的想法是,从apple开始逐个往下比,然后如果找到相同的元素apple,则count++,直到结束,然后再从orange开始,按比较apple的方法走下去,依次类推了。不过问题是如果一个数组元素很多,那这种方法就不好了,所以不清楚应该怎么做啦。
      

  4.   

    你都不让人家用Set了  那就遍历吧  我是这么想的:找到一个元素 比如Apple吧  那你就去数组里找所有的Apple 找到了就把该元素删除  然后循环执行上面的动作 重复越多效率越高   最后统计(数组长度-空元素的个数)就是你要的值了
      

  5.   

    c语言的算发链表不就搞定了 新元素就新开一个节点,飞新元素就num++
    class{
     private String fruitName;
     private int num;
    }
    java已经实现了类似链表的功能。放到list当中就可以了
      

  6.   

    人家不愿意用list set这样的数据结构...
      

  7.   

    对于数组的比较,排序,求和等等,最基本的逻辑都是遍历再比较
    数据结构和算法里面有很多例子,著名的冒泡排序、二分查找……你想了解处理逻辑可以去看这些书
    现在java中提供了很多具体的方法来实现这些,所以我们尽量使用这些,避免重复“造轮子”