aktuelle.kurse/m411/docs/Daten-Uebungen-CodeBeispiele/HashMap/Point3D.java

85 lines
2.4 KiB
Java
Raw Normal View History

2021-08-06 18:08:13 +02:00
package m411;
import java.util.HashMap;
/**
* @author pius portmann, 07.01.2020
*/
public class Point3D {
private int x, y, z; // the coordinates
public Point3D() {
x = 0; y = 0; z = 0;
}
public Point3D(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
@Override
public boolean equals(Object obj) {
System.out.println("equals() called"); // for debugging purposes
if (!(obj instanceof Point3D))
return false;
Point3D p = (Point3D)obj;
if (x != p.x || p.y != y || p.z != z)
return false;
return true;
}
@Override
public int hashCode() {
// Just one of many possibilites for a hash code calculation
System.out.println("hashCode() called"); // for debugging purposes
int hash = 0;
hash = 61 * hash + x;
hash = 61 * hash + y;
hash = 61 * hash + z;
return hash;
}
/** main method to test functionality */
public static void main(String [] args) {
// write out a few hash codes
Point3D point;
point = new Point3D();
System.out.println( "hash=" + point.hashCode());
point = new Point3D(1,0,0);
System.out.println( "hash=" + point.hashCode());
point = new Point3D(0,1,0);
System.out.println( "hash=" + point.hashCode());
point = new Point3D(0,0,1);
System.out.println( "hash=" + point.hashCode());
System.out.println();
//check equality and identity
Point3D p1 = new Point3D( 7, 5, 6);
Point3D p2 = p1; // identical
Point3D p3 = new Point3D( 7, 5, 6); // equal
System.out.println( "hash p1=" + p1.hashCode());
System.out.println( "hash p2=" + p2.hashCode());
System.out.println( "hash p3=" + p3.hashCode());
if (p1.equals(p2)) System.out.println("p1 equals p2");
if (p2.equals(p3)) System.out.println("p2 equals p3");
if (p1 == p2) System.out.println( "p1 is identical to p2");
if (p1 == p3) System.out.println( "p1 is identical to p3");
System.out.println();
// Test usage in HashMap
HashMap<Point3D,String> hmap = new HashMap();
hmap.put(p1, "p1"); // stores p1
hmap.put(p2, "p2"); // p2 replaces p1 becaus it's identical
hmap.put(p3, "p3"); // p3 replaces p2 because it's equal
System.out.println("--- hashMapsize=" + hmap.size());
hmap.put(point, "point");
System.out.println("--- hashMapsize=" + hmap.size());
String v1 = hmap.get(p1);
System.out.println("v1=" + v1);
String vv = hmap.get(point);
System.out.println("vv=" + vv);
}
}