private Id voteLabel()

in computer-algorithm/src/main/java/org/apache/hugegraph/computer/algorithm/community/lpa/Lpa.java [67:98]


    private Id voteLabel(Iterator<Id> messages) {
        // Calculate label frequency
        Map<Id, MutableInt> labels = new HashMap<>();
        assert messages.hasNext();
        while (messages.hasNext()) {
            Id label = messages.next();
            MutableInt labelCount = labels.get(label);
            if (labelCount != null) {
                labelCount.increment();
            } else {
                labels.put(label, new MutableInt(1));
            }
        }

        // Calculate the labels with maximum frequency
        List<Id> maxLabels = new ArrayList<>();
        int maxFreq = 1;
        for (Map.Entry<Id, MutableInt> e : labels.entrySet()) {
            int value = e.getValue().intValue();
            if (value > maxFreq) {
                maxFreq = value;
                maxLabels.clear();
            }
            if (value == maxFreq) {
                maxLabels.add(e.getKey());
            }
        }

        // Random choice
        int selected = this.random.nextInt(maxLabels.size());
        return maxLabels.get(selected);
    }