有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是用来计算重复字符串的

伙计们,有没有办法计算一个字符串在ArrayList中出现的次数? 例如,如果数组由以下字符串组成:

  1. “帕纳多尔”
  2. “努洛芬”
  3. “努洛芬”

您如何让它执行以下操作:

  1. 帕纳多尔1
  2. 努洛芬2号

不使用hashmaps是否可能?只为每个循环或if语句使用arraylists、while循环? 非常感谢您的回答


共 (1) 个答案

  1. # 1 楼答案

    您可以使用双循环(+contains-check)来实现这一点,但它无效

    ArrayList<String> words = new ArrayList<>();
    words.add("Cat");
    words.add("Dog");
    words.add("Bird");
    words.add("Dog");
    words.add("Cat");
    words.add("Dog");
    
    ArrayList<String> alreadyParsed = new ArrayList<>();
    for (String word : words) {
        if (alreadyParsed.contains(word)) {
            continue;
        }
    
        int counter = 0;
        for (String candidate : words) {
            if (candidate.equals(word)) {
                counter++;
            }
        }
    
        System.out.println(word + " " + counter);
        alreadyParsed.add(word);
    }
    

    HashMap相同:

    ArrayList<String> words = new ArrayList<>();
    words.add("Cat");
    words.add("Dog");
    words.add("Bird");
    words.add("Dog");
    words.add("Cat");
    words.add("Dog");
    
    HashMap<String, Integer> counters = new HashMap<>();
    for (String word : words) {
        if (counters.containsKey(word)) {
            counters.put(word, counters.get(word) + 1);
        } else {
            counters.put(word, 1);
        }
    }
    
    System.out.print(counters);