Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Java] Cos'è il compareTo() ?

    Allora l'esercizio mi chiede:

    Creare una classe WrapperComparable che abbia le seguenti caratteristiche:
    abbia come costante incapsulata di tipo Integer che deve essere sempre
    valorizzata;
    abbia un metodo toString() che restituisca l’intero;
    definisca un modo di ordinamento che vada dall’intero incapsulato più alto
    al più basso.
    Infine si crei una classe che verifichi il corretto funzionamento dell’ordinamento.

    Soluzione:

    codice:
    public class WrapperComparable implements Comparable<WrapperComparable> {
    private Integer integer;
    public WrapperComparable(Integer integer) {
    if (integer == null) {
    integer = 0;
    }
    this.integer = integer;
    }
    public Integer getInteger() {
    return integer;
    }
    public void setInteger(Integer integer) {
    this.integer = integer;
    }
    @Override
    public int compareTo(WrapperComparable otherWrapperComparable) {
    return -(integer.compareTo(otherWrapperComparable.getInteger()));
    }
    @Override
    public String toString(){
    return "WrapperComparable("+integer+ ")";
    }
    }

    e poi classe per il test:

    codice:
    import java.util.Arrays;
    public class TestWrapperComparable {
    public static void main(String args[]) {
    WrapperComparable[] array = {new WrapperComparable(1942),
    new WrapperComparable(1974),
    new WrapperComparable(1907)};
    Arrays.sort(array);
    for (WrapperComparable wrapperComparable : array) {
    System.out.println(wrapperComparable);
    }
    }
    }

    mi è tutto chiaro tranne una voce e vorrei capire quale è la sua funzione.

    La parte che non mi è chiara stà nella classe WrapperComparator ed è :

    codice:
    @Override
        public int compareTo(WrapperComparable otherWrapperComparable) {  /Che vuol dire?
            return -(integer.compareTo(otherWrapperComparable.getInteger()));
        }
        
        @Override
        public String toString() {
            return "WrapperComparable("+integer+ ")";
        }
    }

    grazie a tutti.
    Ultima modifica di LeleFT; 12-12-2014 a 19:00 Motivo: Modificati tag QUOTE con tag CODE

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Il codice va racchiuso dai tag CODE (che servono a creare blocchi di codice), non dai tag QUOTE (che servono a creare citazioni). Ho corretto io.

    Inoltre, il titolo della discussione non era adeguato: ho corretto anche quello.


    Cosa non ti è chiaro, comunque, di quella riga? La classe implementa l'interfaccia Comparable e di conseguenza, ne implementa il metodo compareTo(). Tale interfaccia definisce un contratto secondo cui due oggetti di quella classe sono, appunto, comparabili definendo un ordine tra i due (cioè, chi viene prima e chi dopo)... nel tuo caso, l'ordine è inverso rispetto al normale ordinamento numerico, quindi se viene richisto di ordinare una lista di oggetti della tua classe, essi saranno ordinati in modo inverso rispetto al valore del campo "integer".


    Ciao.
    Ultima modifica di LeleFT; 12-12-2014 a 19:05
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Quote Originariamente inviata da francesco51 Visualizza il messaggio
    Allora l'esercizio mi chiede:

    Creare una classe WrapperComparable che abbia le seguenti caratteristiche:
    abbia come costante incapsulata di tipo Integer che deve essere sempre
    valorizzata;
    abbia un metodo toString() che restituisca l’intero;
    definisca un modo di ordinamento che vada dall’intero incapsulato più alto
    al più basso.
    Infine si crei una classe che verifichi il corretto funzionamento dell’ordinamento.

    Soluzione:

    codice:
    public class WrapperComparable implements Comparable<WrapperComparable> {
    private Integer integer;
    public WrapperComparable(Integer integer) {
    if (integer == null) {
    integer = 0;
    }
    this.integer = integer;
    }
    public Integer getInteger() {
    return integer;
    }
    public void setInteger(Integer integer) {
    this.integer = integer;
    }
    @Override
    public int compareTo(WrapperComparable otherWrapperComparable) {
    return -(integer.compareTo(otherWrapperComparable.getInteger()));
    }
    @Override
    public String toString(){
    return "WrapperComparable("+integer+ ")";
    }
    }

    e poi classe per il test:

    codice:
    import java.util.Arrays;
    public class TestWrapperComparable {
    public static void main(String args[]) {
    WrapperComparable[] array = {new WrapperComparable(1942),
    new WrapperComparable(1974),
    new WrapperComparable(1907)};
    Arrays.sort(array);
    for (WrapperComparable wrapperComparable : array) {
    System.out.println(wrapperComparable);
    }
    }
    }

    mi è tutto chiaro tranne una voce e vorrei capire quale è la sua funzione.

    La parte che non mi è chiara stà nella classe WrapperComparator ed è :

    codice:
    @Override
        public int compareTo(WrapperComparable otherWrapperComparable) {  /Che vuol dire?
            return -(integer.compareTo(otherWrapperComparable.getInteger()));
        }
        
        @Override
        public String toString() {
            return "WrapperComparable("+integer+ ")";
        }
    }

    grazie a tutti.
    ok scusa... lo sò che è inverso perchè c'è segno - .
    quello che voglio capire è perchè scrive :

    codice:
    public int compareTo(WrapperComparable otherWrapperComparable) {  
            return -(integer.compareTo(otherWrapperComparable.getInteger()));

  4. #4
    soprattutto vorrei capire perchè otherWrapperComparable

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.