要根据频率输出ArrayList的元素,可以按照以下步骤进行:
这样,输出的ArrayList中的元素就按照频率从高到低排列了。
以下是一个示例代码:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Collections;
import java.util.Comparator;
public class FrequencySort {
public static List<Integer> sortByFrequency(List<Integer> inputList) {
// Step 1: 统计频率
Map<Integer, Integer> frequencyMap = new HashMap<>();
for (int num : inputList) {
frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1);
}
// Step 2: 按照频率排序
List<Map.Entry<Integer, Integer>> entryList = new ArrayList<>(frequencyMap.entrySet());
Collections.sort(entryList, new Comparator<Map.Entry<Integer, Integer>>() {
public int compare(Map.Entry<Integer, Integer> entry1, Map.Entry<Integer, Integer> entry2) {
return entry2.getValue().compareTo(entry1.getValue());
}
});
// Step 3: 构建结果列表
List<Integer> resultList = new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : entryList) {
int num = entry.getKey();
int frequency = entry.getValue();
for (int i = 0; i < frequency; i++) {
resultList.add(num);
}
}
return resultList;
}
public static void main(String[] args) {
List<Integer> inputList = new ArrayList<>();
inputList.add(1);
inputList.add(2);
inputList.add(2);
inputList.add(3);
inputList.add(3);
inputList.add(3);
List<Integer> sortedList = sortByFrequency(inputList);
System.out.println(sortedList); // 输出 [3, 3, 3, 2, 2, 1]
}
}
在这个例子中,我们使用了HashMap来统计每个元素的频率,然后使用ArrayList来存储排序后的结果。最后,我们将结果输出到控制台上。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云