java中怎样去除list中重复的数据,并且显示重复数据的条数

比如说list中的数据是字符串类型的数据,有重复的数据,我只要重复数据的一条,并且显示每个数据重复的条数... 比如说list中的数据是字符串类型的数据,有重复的数据,我只要重复数据的一条,并且显示每个数据重复的条数 展开
 我来答
木有芒果
推荐于2017-12-16 · 如果你问我是谁~我会说我叫木有芒果~哈哈
木有芒果
采纳数:112 获赞数:595

向TA提问 私信TA
展开全部

很多集合处理,我都推荐用Java8的流来处理,是非常简单易懂的

其实你这个问题,总来说就是按照集合中的字符串进行分类,并统计数量,Stream只用简单的代码就完成复杂的操作,代码如下

List<String> list = Arrays.asList("day", "walipo", "day", "walipo", "legeand", "day", "douwbo", "day", "day");
Map<String, Long> collect = list.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(collect);


最后返回的Map就是以字符串为key,value为其个数

追问

报错,有没有完整的代码 看看 谢谢

追答
注意哈,我说了的是java8...你的jdk到8了么...(尴尬....)
福祸55分
2018-03-31 · TA获得超过3597个赞
知道小有建树答主
回答量:15
采纳率:0%
帮助的人:2573
展开全部

删除ArrayList中重复数据保条数。

public static void removeDuplicateWithOrder(List list) 。

Set set = new HashSet()

List newList = new ArrayList()

for (Iterator iter = list.iterator(); iter.hasNext();) {  

Object element = iter.next();  

if (set.add(element))  

newList.add(element);  

list.clear();  

list.addAll(newList);  

System.out.println( " remove duplicate " + list)。

List<String> list = new ArrayList<String>();

list.add("a");

list.add("a");

list.add("a");

list.add("b");

list.add("b");

list.add("c");

list.add("c");

list.add("c");

list.add("c");

//默认每个元素至少出现了一次

Map<String, Integer> map = new HashMap<String, Integer>();

for (String string : list) 

map.put(string, 1);

for (int i = 0; i < list.size(); i++)  //外循环是循环的次数。

for (int j = list.size() - 1 ; j > i; j--)  //内循环是 外循环一次比较好。

if (list.get(i).equals(lis,

list.remove(j);

if(map.containsKey(list.get(i))){

map.put(list.get(i), map.get(list.get(i))+1)

for (String string : list) 

System。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhuniadi82
推荐于2018-02-27 · TA获得超过397个赞
知道小有建树答主
回答量:205
采纳率:66%
帮助的人:116万
展开全部
List<String> list = new ArrayList<String>();
list.add("a");
list.add("a");
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("c");
list.add("c");
list.add("c");
//默认每个元素至少出现了一次
Map<String, Integer> map = new HashMap<String, Integer>();
for (String string : list) {
map.put(string, 1);
}
for (int i = 0; i < list.size(); i++)  //外循环是循环的次数
        {
            for (int j = list.size() - 1 ; j > i; j--)  //内循环是 外循环一次比较的次数
            {

                if (list.get(i).equals(list.get(j)))
                {
                 list.remove(j);
                 if(map.containsKey(list.get(i))){
                 map.put(list.get(i), map.get(list.get(i))+1);
                 }
                }

            }
        }

for (String string : list) {
System.out.println("去除重复后的元素:"+string+"--重复的次数:"+map.get(string));
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不落的太阳Sean
2016-12-07 · TA获得超过281个赞
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:179万
展开全部
/********************************************************************************
 * Project Name       [java-projects]
 * File Name       [PACKAGE_NAME.CountDuplication.java]
 * Creation Date   [2016-12-07]
 * <p/>
 * Copyright© 2016 ge.y.yang@hotmail.com All Rights Reserved
 * <p/>
 * Work hard, play harder, think big and keep fit
 ********************************************************************************/

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author <a href="mailto:ge.y.yang@hotmail.com">杨舸</a>
 * @version 1.0.0
 * @since jdk 1.8
 */
public class CountDuplication {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("day");
        list.add("walipo");
        list.add("day");
        list.add("walipo");
        list.add("legeand");
        list.add("day");
        list.add("douwbo");
        list.add("day");
        list.add("day");

        Map<String, Integer> map = new HashMap<>();
        for (String str : list) {
            Integer count = map.get(str);
            if (count == null) {
                count = 1;
                map.put(str, count);
            } else {
                map.put(str, ++count);
            }
        }

        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            if (value == 1) {
                System.out.println(key + "有1条");
            } else {
                System.out.println(key + "有" + (value - 1) + "条重复记录");
            }
        }
        
        System.out.println(map.keySet()); // 不重复的元素

    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北京金楼世纪科技有限公司
2016-12-07 · 企业短信服务平台。
北京金楼世纪科技有限公司
阅信短信验证码平台是国内新兴智能云通信服务商,隶属于北京金楼世纪科技有限公司,是中国移动、中国联通、中国电信三大运营商的资深战略合作伙伴。
向TA提问
展开全部
package com.Frame;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        HashMap<String, String> map = new HashMap<String, String>();
        List<String> list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("d");
        List<String> tempList = new ArrayList<String>();
        for (String i : list) { // 删除重复元素
            if (!tempList.contains(i)) {
                tempList.add(i);
            }

        }

        for (String a : list) // 统计元素重复次数
        {
            String count = map.get(a);
            if (count == null) {
                map.put(a, "1");
            } else {
                map.put(a, (Integer.parseInt(count) + 1) + "");
            }
        }
        System.out.println("list中去重后的元素有:");
        for (String i : tempList) {

            System.out.println(i);
        }
        System.out.println("其中:");
        for (String key : map.keySet()) {
            System.out.println(key + "出现" + map.get(key) + "次");
        }
    }

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式