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

来源:互联网 发布:php修复00截断的版本 编辑:程序博客网 时间:2024/05/20 10:22

感谢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

原创粉丝点击