当前位置: 首页 > 知识库问答 >
问题:

从Map/HashMap中删除重复的值并获取最频繁的值

凌翔宇
2023-03-14

我试图删除地图条目,但还没有弄清楚如何删除,这意味着有一段时间我制作了另一张地图。

  1. 我需要找出几个句子中出现的情况。(我不知道这些句子,也不知道其中可能出现的单词)
  2. 获取句子中最并行的单词,无论大小写和重音
  3. 获取句子中的第二个和第三个并发单词
  4. 打印出现次数最多的并发单词
  5. 尽可能地提高效率

第5点是最重要的,跟着你会看到我到目前为止有什么。

public class StringTest {

    public static void main(String[] args) {

        String stringTest = "En esta cadena tenemos mas cadenas que la cadena principal la primera vez que intente esta solucion no pude mas que intentar una y otra vez vez vez vez";
        new StringTest(stringTest);

    }

    public StringTest(String string) {

        String [] splitString = string.split(" ");
        Map<String, Integer> mapString = new HashMap<String, Integer>();
        mapString.put(splitString[0], 1);

        for (int i=1; i <= splitString.length-1; i++){
            if (mapString.containsKey(splitString[i])){
                mapString.put(splitString[i], mapString.get(splitString[i])+1);
            } else{
                mapString.put(splitString[i], 1);
            }
        }

        Map<String, Integer> newMap = new HashMap<String, Integer>();
        for (Entry<String, Integer> entry : mapString.entrySet()){
            if (entry.getValue()!=1){
                newMap.put(entry.getKey(), entry.getValue());
            }
        }

        System.out.println(newMap);
    }
}

共有1个答案

狄睿
2023-03-14

您好,这是我使用您的示例的解决方案

public class StringTest {

public static void main(String[] args) {
    String stringTest = "En esta cadena tenemos mas cadenas que la cadena principal la primera vez que intente esta solucion no pude mas que intentar una y otra vez vez vez vez";
    new StringTest(stringTest);

}

public StringTest(String string) {

    String[] splitString = string.split(" ");

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

    // Loop the array
    for (String token : splitString) {
        // Convert token to lowerCase
        token = token.toLowerCase();
        if (mapString.containsKey(token)) {
            mapString.put(token, mapString.get(token) + 1);
        } else {
            mapString.put(token, 1);
        }
    }

    // Convert Map to List of Map
    List<Map.Entry<String, Integer>> list = new LinkedList<Map.Entry<String, Integer>>(mapString.entrySet());

    // Sort list with Collections.sort(), provide a custom Comparator
    Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {

        public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
            // o2 first that the order was descendant
            return (o2.getValue()).compareTo(o1.getValue());
        }
    });

    System.out.println("The most concurrent Word: " + list.get(0).getKey());
    System.out.println("The second word is: " + list.get(1).getKey() + ", an third is: " + list.get(2).getKey());
    System.out.println("The top concurrent words are");

    for (Entry<String, Integer> entry : list) {
        if (entry.getValue() > 1) {
            System.out.println(entry);

        }
    }
}

}

 类似资料:
  • 问题内容: 我有一个数字数组,我想知道该数组中哪个数字最常见。数组有时有5-6个整数,有时有10-12个,有时甚至更多- 数组中的整数也可以不同。因此,我需要一个可以与数组的不同长度和值一起使用的函数。 一个例子: 另一个例子: 现在,我正在寻找一个给出0(在第一个示例中)的函数,因为它在此数组中是3倍,而数组中的另一个整数(1)在数组中仅是2倍。或第二个例子是4。 看起来很简单,但是我找不到解决

  • 我有一个具有重复值的地图: 我想在地图上有 你知道如何去掉重复的值吗? 目前,我收到'java.util.ConcurrentModificationException'错误。 谢谢。

  • 我有一个hashmap,它包含一个arraylist作为值。我想检查其中一个ArrayList是否包含一个对象,然后从ArrayList中移除该对象。但是,怎么做? 我尝试过使用一些for循环,但是我得到了一个ConcurrentModificationException,并且我无法消除该异常。 我已经试过了:

  • 问题内容: 我有一个字符串数组列表,并在其中添加了一些重复值。我只想删除那个重复的值,那么如何删除它。 在这个例子中我有一个主意。 但是有没有足够的方法来删除该重复表格列表。没有使用For循环?我可以通过使用HashSet或其他方式来做到这一点,但只能使用数组列表。想对此提出您的建议。谢谢您的提前答复。 问题答案: 您可以从列表中创建一个。在将包含每个元素只有一次,在相同的顺序。然后从创建一个新的

  • 问题内容: 我有一个表Orders(id_trip,id_order),表Trip(id_hotel,id_bus,id_type_of_trip)和表Hotel(id_hotel,name)。 我想在表Orders中获得最常入住的酒店的名称。 问题答案: 分布中的“最常出现的值”是统计学中的一个不同概念,带有一个技术名称。它称为发行版的MODE。Oracle具有此功能。https://docs.

  • 可能重复: 查找字符串中最长的重复序列 我正在解决一个问题,我需要找到重复最多的模式。 为了简单和方便,请考虑这个字符串: 重复次数最多的序列(例如,最初考虑字符串长度大于3个字符)是“Lorem Ipsum”。“Lorem”和“Ipsum”当然也重复相同的次数,但如果它们重复相同的次数,则较长的字符串优先于较短的字符串。 什么样的算法可以有效地找到这种模式,最好是在Python中?

  • 在mongodb中,我有一个集合,其中数组有重复的条目,如 我需要删除重复的数组,只保留唯一的数组值,如下所示。 最好的方法是什么 谢啦

  • 我在Java中有一个< code>HashMap: 我需要的是删除重复条目(“1”,1)[当键和值都重复时]。我搜索并只找到了“如何删除重复的键/值”。有人能帮忙吗?