3

私はint配列を持っています:

{1,2,4,2,3,5,6,4,3}

のような配列要素の頻度を見つけるにはどうすればよいですか1=1,2=2,3=2,4=4..。配列を渡して、配列要素の数を示す配列を返すことができるクラスが必要です。ex:- array{[0]=1,[1]=2,[2]=3,[3]=4..}(上記の配列の例);

4

11 に答える 11

8
class MapTest
{
    public static void main(String args[]){
        HashMap<Integer,Integer> h = new HashMap<Integer,Integer>();
        int arr[] = new int[]{2,2,3,3,5,6,7,9,9,0};
        for(int i=0; i<arr.length; i++){
            if(h.containsKey(arr[i])){
                h.put(arr[i], h.get(arr[i]) + 1);
            } else {
                h.put(arr[i], 1);
            }
        }
        System.out.println(h);
    }
}
于 2015-08-27T08:24:15.840 に答える
5

Java 8では、これを行うことができます

Map<Integer, Long> freq = Arrays.stream(array).boxed().
                collect(Collectors.groupingBy(Integer::intValue, Collectors.counting()));
于 2014-05-12T01:03:45.673 に答える
3

あなたはいくつかのことをしなければなりません:

  1. 数値の範囲の上限と下限を定義します。
  2. これらの番号の出現を保存するための便利なオブジェクト/データ構造を確立します。
  3. 渡された配列を反復処理し、各数値のすべての出現をカウントして、結果を便利なオブジェクト/データ構造に格納します。

これが簡単な方法で行われる場合、渡された配列から要素を読み取り、最終結果を出力するだけで済みます。

于 2012-08-31T00:50:18.113 に答える
2

配列の要素の範囲が指定され、配列サイズに制限されている場合、最善の解決策はハッシュ マップを使用することです。T(n) = O(n)、補助空間 = O(n)。

public static void findCount3(int[] a){
    Map<Integer, Integer> hm = new HashMap<Integer, Integer>();     
    for(int i = 0; i < a.length; i++){
            if(!hm.containsKey(a[i])){
               hm.put(a[i], 1);
            }else{
               hm.put(a[i], hm.get(a[i])+1);
    }               
    System.out.println(hm);         
}
于 2015-08-01T09:47:40.247 に答える
2

Java-8 を使用すると、配列の頻度を 1 行で見つけることができます。

Map<Integer, Long> freq = Arrays.stream(a).boxed().
                          collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

また、質問では配列を返す必要があるため、

public Object[] getFrequencies(int[] a) {
    Map<Integer, Long> freq = Arrays.stream(a).boxed().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
    return freq.entrySet().toArray();
}
于 2019-11-21T16:08:29.613 に答える
1

ここでそれを与えることなく、良い出発点です:

int[] array = {1,2,4,2,3,5,6,4,3};

        public int[] (array){
            //need to perform a sort...or a search
            //after searching check for matches,
            //sorting could make performing comparisons more efficient
            //not all searches/sorts are created equal.

            int[array.length] result += {"["+numberChecked+"]="+freqOccurred};
            return result;
        }

このコードはコンパイルされていないので、擬似コードと考えてください。目的は、目的の目標を達成する方法について考えさせることです。配列内の頻度要素をチェックできるJavaパッケージがすでに存在している可能性がありますが、これはおそらくあなたが探しているものです。幸運を。

于 2012-08-31T05:44:10.553 に答える
1

Java配列内の要素の頻度を数えるソリューションがあります

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class ItemCount {

public static void main(String[] args)
{
    try{
            int count=1,index=1;
            BufferedReader  br=new BufferedReader(new InputStreamReader(System.in));
            System.out.print("Enter the Size of array : ");
            int size=Integer.parseInt(br.readLine());
            System.out.print("Enter the Elements of array : ");
            int arr[]=new int[size];

            for(int i=0;i<arr.length;i++)
            {
                System.out.print("arr["+i+"] :  ");
                arr[i]=Integer.parseInt(br.readLine());
            }
            System.out.print("Sorted Array is :");
            SortingArray.sortDescendind(arr);

            for(int i=0;i<arr.length;i++)
            {
                System.out.println("arr["+i+"] :  "+arr[i]);

            }

            for(int i=0;i<arr.length;)
            {
                count=1;
                for(index=i+1;index<arr.length;index++)
                {
                    if(arr[i]==arr[index])
                    {
                        count++;
                    }
                    else{

                        break;
                    }


                }
                System.out.println(""+arr[i] +"----> "+count);
                i+=count;

            }

    }catch(Exception ex)
    {
        ex.printStackTrace();
    }
}

}

/// 配列の並べ替え方法を選択できます---->SortingArray.sortDescendind(arr)

于 2012-11-24T16:37:22.550 に答える