Java efficace Chapitre 3

Chapitre 3. Méthodes communes à tous les objets

10. La dérogation égale devrait faire l'objet de contrats généraux

11. Si vous remplacez égal, remplacez également le hashcode

12. Toujours remplacer toString

    public String toString() {
        ThreadGroup group = getThreadGroup();
        if (group != null) {
            return "Thread[" + getName() + "," + getPriority() + "," +
                           group.getName() + "]";
        } else {
            return "Thread[" + getName() + "," + getPriority() + "," +
                            "" + "]";
        }
    }

13. Soyez prudent lorsque vous remplacez le clone

14. Envisager de mettre en œuvre Comparable

package tryAny.effectiveJava;

import static java.util.Comparator.*;
import java.util.Comparator;
import java.util.stream.Stream;

public class CompareTest {
    public static void main(String[] args) {
	Stream<PhoneNum> s = Stream.of(new PhoneNum(111, 222, 333), new PhoneNum(111, 222, 222),
		new PhoneNum(111, 333, 111), new PhoneNum(000, 999, 1));
	s.sorted().forEach(System.out::println);
    }
}

class PhoneNum implements Comparable<PhoneNum> {
    int areaCode;
    int prefix;
    int lineNum;

    public PhoneNum(int areaCode, int prefix, int lineNum) {
	this.areaCode = areaCode;
	this.prefix = prefix;
	this.lineNum = lineNum;
    }

    private static final Comparator<PhoneNum> COMPARATOR = comparingInt((PhoneNum pn) -> pn.areaCode)
	    .thenComparingInt(pn -> pn.prefix).thenComparingInt(pn -> pn.lineNum);

    @Override
    public int compareTo(PhoneNum pn) {
	return COMPARATOR.compare(this, pn);
    }

    @Override
    public String toString() {
	StringBuilder sb = new StringBuilder();
	sb.append("areaCode:").append(areaCode).append(",prefix:").append(prefix).append(",lineNum:").append(lineNum);
	return sb.toString();
    }
}

Recommended Posts

Efficace Java Chapitre 2
Effective Java Chapitre 6 34-35
Effective Java Chapitre 4 15-22
Java efficace Chapitre 3
Efficacité de Java 3rd Edition Chapitre 5 Génériques
Méthodes efficaces du chapitre 8 de Java 3rd Edition
[Lire Java efficace] Chapitre 2 Item 7 "Eviter les finaliseurs"
Effective Java 3rd Edition Chapitre 9 Programme Général
Java Performance Chapitre 1 Introduction
3ème résumé efficace de Java
Modèle de générateur (Java effectif)
Enum et annotations du chapitre 6 de Java 3rd Edition efficace
Efficacité de Java 3rd Edition Chapitre 4 Classes et interfaces
[Lire Java efficace] Chapitre 3 Item 10 "Always Override toString"
Efficace Java 3e édition Chapitre 7 Lambda et Stream
J'ai commencé Java Gold (Chapitre 1-1)
[Lire Java efficace] Chapitre 3 Point 12 "Considérer l'implémentation de Comparable"
Java Performance Chapter 2 Approche des tests de performances
Java
Effective Java 3rd Edition Chapitre 2 Création et disparition d'objets
Java
De Java inefficace à Java efficace
[Effective Java] Supprimer les références d'objet obsolètes
Java Performance Chapitre 5 Bases de la récupération de place
[Java efficace] Évitez de créer des objets inutiles
[Lire Java efficace] Chapitre 2 Item 4 "Forcer l'impossibilité d'immobilisation avec un constructeur privé"
[Lire Java effectif] Chapitre 3 Rubrique 9 "Lors de la substitution d'égaux, toujours remplacer hashCode"
[Lire Java efficace] Chapitre 2 Item 5 "Eviter la création d'objets inutiles"
Apprendre Java (0)
[Java] tableau
Java protégé
Module [Java]
Tableau Java
Étudier Java ―― 9
Java scratch scratch
Astuces Java, astuces
Méthodes Java
Méthode Java
Tableau Java
[Java] ArrayDeque
java (méthode)
Journée Java 2018
Chaîne Java
java (tableau)
Java statique
Sérialisation Java
java débutant 4
[Lire Java efficace] Chapitre 2 Item 1 "Considérez les méthodes de fabrique statiques plutôt que les constructeurs"
JAVA payé
Étudier Java ―― 4
Java (ensemble)
tri shell java
[Java] compareTo
Étudier Java -5
java réfléchissant 获 获 举
java (interface)
Tableau Java
Étudier Java ―― 1
[Java] Array
[Java] Polymorphisme