Java获取List的First和Last重复元素

时间:2017-06-07 06:59:10

标签: java arraylist


在我的应用程序中,我想从数组中获取第一个和重复的元素 例如,

String[] strings = {"one", "one", "one", "one", "one", "one", "one", "one", "one", "one", "one", "one"
                , "two", "two", "two", "two", "two", "two", "two", "two", "two", "two", "two", "two", "two", "two", "two"
                , "three", "three", "three", "three", "three", "three", "three", "three", "three", "three", "three"
                , "four", "four", "four", "four", "four", "four", "four", "four", "four", "four"
                , "five", "five", "five", "five", "five", "five"
                , "six", "six", "six", "six", "six", "six", "six", "six", "six"
                , "seven", "seven", "seven", "seven", "seven", "seven", "seven", "seven"
                , "eight", "eight", "eight", "eight", "eight", "eight"
                , "nine", "nine", "nine", "nine", "nine", "nine", "nine", "nine", "nine"
                , "ten", "ten", "ten", "ten", "ten", "ten", "ten", "ten", "ten"};

对于上面的列表我希望得到像

的输出 一个
一个
2个
2个
3个
3个
4个
4个
5个
5个
6个
6个
7个
7个
8个
8个
9个
9个
10个
10个

2 个答案:

答案 0 :(得分:0)

你可以试试这个

public static void main(String[] args) {

    String[] strings = {"one", "one", "one", "one", "one", "one", "one", "one", "one", "one", "one", "one"
            , "two", "two", "two", "two", "two", "two", "two", "two", "two", "two", "two", "two", "two", "two", "two"
            , "three", "three", "three", "three", "three", "three", "three", "three", "three", "three", "three"
            , "four", "four", "four", "four", "four", "four", "four", "four", "four", "four"
            , "five", "five", "five", "five", "five", "five"
            , "six", "six", "six", "six", "six", "six", "six", "six", "six"
            , "seven", "seven", "seven", "seven", "seven", "seven", "seven", "seven"
            , "eight", "eight", "eight", "eight", "eight", "eight"
            , "nine", "nine", "nine", "nine", "nine", "nine", "nine", "nine", "nine"
            , "ten", "ten", "ten", "ten", "ten", "ten", "ten", "ten", "ten"};

    Map<String,Integer> itemMap=new LinkedHashMap<>();
    for (String item:strings){
        if(!itemMap.containsKey(item)){
            itemMap.put(item,1);
        }else{
            itemMap.put(item, itemMap.get(item)+1);
        }
    }

    for(Map.Entry<String, Integer> mapEntry:itemMap.entrySet()){
        if(mapEntry.getValue()>1){
            System.out.println(mapEntry.getKey()+"\n"+mapEntry.getKey());
        }
    }
}

答案 1 :(得分:0)

如果您使用的是Java8,则可以像这样使用Stream API。

    Stream.of(strings)
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
            .entrySet()
            .stream()
            .filter(entry -> entry.getValue() > 1)
            .forEach(entry -> System.out.println(entry.getKey() + "\n" + entry.getKey()));