私は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..}
(上記の配列の例);
私は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..}
(上記の配列の例);
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);
}
}
Java 8では、これを行うことができます
Map<Integer, Long> freq = Arrays.stream(array).boxed().
collect(Collectors.groupingBy(Integer::intValue, Collectors.counting()));
あなたはいくつかのことをしなければなりません:
これが簡単な方法で行われる場合、渡された配列から要素を読み取り、最終結果を出力するだけで済みます。
配列の要素の範囲が指定され、配列サイズに制限されている場合、最善の解決策はハッシュ マップを使用することです。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);
}
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();
}
ここでそれを与えることなく、良い出発点です:
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パッケージがすでに存在している可能性がありますが、これはおそらくあなたが探しているものです。幸運を。
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)