Inheritance IV - Object Methods
List of class Object methods
String toString()boolean equals(Object obj)Class <?> getClass()int hashCode()protected Objectclone()protected void finalize()void notify()void notifyAll()void wait()void wait(long timeout)void wait(long timeout, int nanos)
toString()
- Provides string representatoin
System.out.println()implicitly call this method
java
@Override
public String toString() {
String str = "(";
...
str += ")";
return str;
}StringBuilder
- String are inmutable, appending a string creates new copy (time consuming O(n^2))
- Use
StringBuilderclass to create mutable string object
java
@Override
public String toString() {
StringBuilder returnSB = new StringBuilder("{");
for (int i = 0; i < size - 1; i += 1) {
returnSB.append(items[i].toString());
returnSB.append(", ");
}
returnSB.append(items[size - 1]);
returnSB.append("}");
return returnSB.toString();
}Simpler toString
java
@Override
public String toString() {
List<String> listOfItems = new ArrayList<>();
for (T x : this) {
listOfItems.add(x.toString());
}
return "{" + String.join(', ', listOfItems) + "}";
}Extra: ArraySet.of()
java
public static <T> ArraySet<T> of(T... stuff) {
ArraySet<T> returnSet = new ArraySet<T>();
for (T x : stuff) {
returnSet.add(x);
}
return returnSet;
}T... stuffVararg: variable number of arguments<T> ArraySet<T>static method do not know what isT(related to object), so we need to specify
equals()
equals()and==have different behaviour==check same object (memory)equals()defined by implementation
Example: equals() for ArraySet
java
public boolean equals(Object other) {
/* Same object */
if (this == other) {
return true;
}
if (other == null) {
return false;
}
/* Remember to check the type (generic) */
if (other.getClass() != this.getClass()) {
return false;
}
ArraySet<T> o = (ArraySet<T>) other;
if (o.size() != this.size()) {
return false;
}
for (T item : this) {
if (!o.contains(item)) {
return false;
}
}
return true;
}