java map数组如何去重_JAVA-数组去重,并且计算每个值的重复次数

感谢http://blog..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 groups = arrayCountUtils.find(data);

for (Group group : groups) {

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

}

}

/**

* 计算一个数组去重后的数量和每个去重值的数量

* @param data 数据源

* @return 返回的列表的长度代表去重后的数量 Group的字段title,count分别代表去重后的值和数量

*/

public List find(String [] data) {

//用来记录运算后的数据

Map 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(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..net/zhangphil

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值