マップに値としてのArrayListを入れて互換性のないタイプのエラー

ディネッシュバブ:

私はそれがすでに存在する場合は、リストを取得し、それに要素を追加しています。

コードスニペット:

Map<Integer, List<Integer>> map = new TreeMap<>(Collections.reverseOrder());
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
    int factor = 0;
    int num = sc.nextInt();
    for (int j = 1; j <= num; j++)
      if (num % j == 0) factor++;  //just getting factor count of each input

    map.put(factor, map.getOrDefault(factor, new ArrayList<>()).add(num)); // error line

エラーの詳細:

エラー:互換性のない型:ブール値は、リストに変換することはできません

このトラブルを解決する方法は?

Nzr_art:

のでaddは()があるboolean戻り値の型として。あなたは持っているマップするためにブール値を置くことができないList<Integer>値として。

あなたは、作成する必要があるのArrayListを >最初にそれに要素を追加します- 。

そしてだけにして値としてマップにそれを置きます:

List<Integer> list = new ArrayList<>();
list.add(num);
map.put(factor, map.getOrDefault(factor, list));

Javaの9+からは、あなたが使用することができますList.of()

map.put(factor, map.getOrDefault(factor, List.of(num)));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=372926&siteId=1