Confronto tra attributi

di il
1 risposte

Confronto tra attributi

Attibuto 8: Y={0, 1, 5, 6} N={2, 3, 4, 7, 8}
Attibuto 7: Y={6, 7} N={0, 1, 2, 3, 4, 5, 8}
Attibuto 6: Y={0, 1, 2, 3} N={4, 5, 6, 7, 8}
Attibuto 5: Meat={0, 1, 7, 8} Grass={2, 3} Fish={5} Grain={4, 6}
Attibuto 4: Claw={0, 1, 4, 6, 7} N={8} Web={5} Hoof={2, 3}
Attibuto 3: Y={4, 5, 6, 7} N={0, 1, 2, 3, 8}
Attibuto 2: Forward={0, 1, 7, 8} Side={2, 3, 4, 5, 6}
Attibuto 1: Blunt={2, 3} N={4, 5, 6, 7} Pointed={0, 1, 8}
Attibuto 0: Y={0, 1, 2, 3} N={4, 5, 6, 7, 8}

devo effettuare un confronto tra gli attributi, ad esempio prendo attributo 1 e lo confronto con attributo 0, cioè devo contare il numero di elementi che sono contenuti in attributo 0.

Attibuto 1: Blunt={2, 3} N={4, 5, 6, 7} Pointed={0, 1, 8}

Attibuto 0: Y={0, 1, 2, 3} N={4, 5, 6, 7, 8}

ho che Blunt={2, 3} è contenuto in Y={0, 1, 2, 3} , ho 2 elementi contenuti
ho che N={4, 5, 6, 7} è contenuto in N={4, 5, 6, 7, 8} (attributo 0) quindi ho 4 elementi contenuti
ho che Pointed={0, 1, 8} non ècontenuto ne in Y={0, 1, 2, 3} (attributo 0) ne in N={4, 5, 6, 7, 8} (attributo 0).
quindi dal seguente confronto ho 2+4 elementi contenuti cioè 6 che poi devo dividere per il numero totale di attributi cioè 9 .

Infine mi faccio i miei confronti tra tutti gli attributi:
Attributo 1 lo confronto con Attributo 0,
Attributo 2 lo confronto con Attributo 0,
.
.
Attributo 8 lo confronto con Attributo 0.

poi
Attributo 0 lo confronto con Attributo 1,
Attributo 2 lo confronto con Attributo 1,
.
.
Attributo 8 lo confronto con Attributo 1.
e così via

come si implementa tutto ciò?

1 Risposte

  • Re: Confronto tra attributi

    Ciao, spero di aver capito bene il tuo problema, credo che una possibile soluzione possa essere questa che ti scrivo qui di seguito che fa uso di liste e generics.In sostanza gli attributi sono modellati secondo liste i cui elementi sono liste di interi che rappresentano gli insiemi associati a ciascun attributo.Il metodo inclusionCheck() verifica se un insieme è contenuto in un altro ed è utilizzato dal metodo compareAttributes() che prende in input due attributi e ne effettua il confronto restituendo poi la somma totale degli elementi degli insiemi contenuti.Spero di esserti stato di aiuto.

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;


    public class Test {

    public static void main(String[] args) throws Exception{

    List<List<Integer>> attribute1= new ArrayList<List<Integer>>();
    List<List<Integer>> attribute0= new ArrayList<List<Integer>>();

    Integer[] atribute1BluntList = {2,3};
    Integer[] atribute1NList ={4,5,6,7};
    Integer[] atribute1PointedList ={0,1,8};

    attribute1.add(Arrays.asList(atribute1BluntList));
    attribute1.add(Arrays.asList(atribute1NList));
    attribute1.add(Arrays.asList(atribute1PointedList));

    Integer[] atribute0YList = {0,1,2,3};
    Integer[] atribute0NList ={4,5,6,7,8};

    attribute0.add(Arrays.asList(atribute0YList));
    attribute0.add(Arrays.asList(atribute0NList));

    System.out.println("Compare Attribute 1 and Attribute 0:"+
    new Test().compareAttributes(attribute1,attribute0));

    }

    /**
    * Confronta due attributi restituendo la somma totale degli elementi
    * degli insiemi per i quali il controllo di inclusione ha dato
    * esito positivo
    * @param attributes1
    * @param attributes2
    * @return
    */
    public int compareAttributes(List<List<Integer>> attributes1,List<List<Integer>> attributes2){

    int check = 0;

    for(List<Integer> elements1 : attributes1){
    for(List<Integer> elements2 : attributes2){
    check+=inclusionCheck(elements1,elements2);
    }
    }

    return check;
    }

    /**
    * Verifica se gli elementi della lista elements1 sono
    * contenuti nella lista elements2, se si restituisce
    * il numero di questi elementi altrimenti 0
    * @param elements1
    * @param elements2
    * @return
    */
    public int inclusionCheck(List<Integer> elements1,List<Integer> elements2){

    if( elements2.containsAll(elements1)) {
    return elements1.size();
    }else{
    return 0;
    }

    }
    }
Devi accedere o registrarti per scrivere nel forum
1 risposte