JAVA-数组去重,并且计算每个值的重复次数

感谢http://blog.csdn.net/zhangphil/article/details/47291145提供的思路和方法,作者提供了有序的数组去重的方法。参考这个思路,如果数组是无序的,那么该怎么去重呢。


public class ArrayCountUtils {


    public static void main(String args[]) {

        String[] data = { "1", "2", "1", "1", "3", "asdf", "3", "asdf", "3", "asdf", "3", "asdf", "3", "asdf", "sss", "5" };

        ArrayCountUtils arrayCountUtils = new ArrayCountUtils();
        List<Group> groups = arrayCountUtils.find(data);
        for (Group group : groups) {

            System.out.println(group.title + ":::::"+group.count);

        }

    }

    /**
     * 计算一个数组去重后的数量和每个去重值的数量
     * @param data 数据源
     * @return 返回的列表的长度代表去重后的数量   Group的字段title,count分别代表去重后的值和数量
     */
    public List<Group> find(String [] data) {

        //用来记录运算后的数据
        Map<String, Group> resultMap = new LinkedHashMap<>();
        /**
         * 运算到的位置记录
         */
        int countIndex = 0;

        while (countIndex < data.length) {

            String s = data[countIndex];
            //如果这个值运算过 不再运算
            if (resultMap.get(s) != null) {
                countIndex++;
                continue;
            }

            Group group = new Group();
            group.title = s;

            for (int i = countIndex; i < data.length; i++) {

                if (data[i].equals(s)) {
                    group.count++;
                }

            }
            resultMap.put(s, group);
            countIndex++;
        }


        return new ArrayList<Group>(resultMap.values());

    }


    /**
     * 用来记录去重后的信息
     */
    private class Group {
        public String title;
        public int count;

    }


}

输出结果:

1:::::3
2:::::1
3:::::5
asdf:::::5
sss:::::1
5:::::1


感谢原博客http://blog.csdn.net/zhangphil

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值