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
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Java数组去重的多种方法
- 下一篇: java去除数组重复元素的四种方法