Esercizio..consiglio

di il
1 risposte

Esercizio..consiglio

Salve sto facendo un esercizio per il corso, dato un array di interi devo riempire un hashmap che ha come chiave ogni numero dell'array e come valore il numero di volte che che è maggiore degli altri numeri
int [] arr = {2,3,2,8,8,1,7,8};
output: {1=0, 2=1, 3=3, 7=4, 8=5}

io ho fatto così, creando un altro metodo maggiore() , io lo vorrei fare senza creare il metodo maggiore() ma mi si incasina come potrei fare? perchè il prof non vuole che facciamo altri metodi


package ese_Array;

import java.util.HashMap;

public class numeri {

	int arr[];
	
	
	public numeri(int[] arr) {
		this.arr = arr;
	}

	public void calcola (){
		int val =0;
		HashMap<Integer, Integer> h = new HashMap<>();
		for(int i=0;i<arr.length;i++){
	
		val = maggiore(arr[i]);
		h.put(arr[i], val);
		
		}
	
		System.out.println(h);
	}
	
	public int maggiore (int num){
		int  conta = 0;
		for(int i=0;i<arr.length;i++){
			if(num>arr[i])
		 conta++;
			
		}
		
		return conta;
	}
	
	
	public static void main(String[] args) {

		int [] arr = {2,3,2,8,8,1,7,8};	
		numeri n = new numeri(arr);
		n.calcola();
	}

}

1 Risposte

  • Re: Esercizio..consiglio

    Potresti risolvere in una sola linea:
    
            Integer [] vect = {2,3,2,8,8,1,7,8};
            final HashMap<Integer, Integer> map = new HashMap<>();
            Arrays.asList(vect).stream().forEach(n -> map.put(n, (int)Arrays.asList(vect).stream().filter(t -> n>t).count()));
    
Devi accedere o registrarti per scrivere nel forum
1 risposte