java--exceptions
/*Explicit Exceptions: * We can also throw our own exceptions using the throw keyword. *1) Can provide more information message to a user. *2) Can provide more information to code that "catches " the exceptions. */ /*The Enhanced For Loop * Java allows us to iterate through Lists and Sets using * a convenient shorthand syntax sometimes called the * "foreeach" or "enhanced for" loop. */ /*For-each Iteration And ArraySets *To support theenchanced for loop, we need to make ArraySet implements. *There are also some default methods in Iterable, not shown. * * public interfce Iterator<T> { * Iterator<T> iterator(); * * } * */ import java.util.HashSet; import java.util.Set; import java.util.Iterator; public class ArraySet<T> implements Iterable<T>{ private T[] items; private int size; public ArraySet() { items = (T[]) new Object[100]; size = 0; } /*Returns true if this map contains a mapping for the specified key*/ public boolean contains(T x) { for(int i = 0; i < size; i+= 1) { if(items[i] == null) { if(x == null) { return true; } } if(x.equals(items[i])) { return true; } } return false; } public void add(T x) { if(x == null) { throw new IllegalArgumentException("You can't add null to an ArraySet"); } if(contains(x)) { return; } items[size] = x; size += 1; } public int size() { return size; } /**returns an iterator into ME. */ public Iterator<T> iterator() { return new ArraySetIterator(); } /*public interface Iterator <T> { * boolean hasNext(); * T next(); * } */ private class ArraySetIterator implements Iterator<T> { private int wizPos; public ArraySetIterator() { wizPos = 0; } public boolean hasNext() { return wizPos < size; } public T next() { T returnItem = items[wizPos]; wizPos += 1; return returnItem; } } /*The toString() method provides a string representation * of an object. * *System.out.println(Object x) calls x.toString(); The default toString() is the name of the class, @,memory location of the object; */ @Override public String toString() { // String returnString = "{"; 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(); /* for(T item : this) { returnString += item.toString(); returnString += ","; }*/ } /* Equals vs. == * == compares the bits. For reference, == means "referencing the same object" * */ @Override public boolean equals(Object other){ if(this == other) {return true; } if(other == null) { return false; } 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; } public static void main(String[] args) { /*Set<Integer> javaset = new HashSet<>(); javaset.add(5); javaset.add(23); javaset.add(42); Iterator<Integer> seer = javaset.iterator(); while(seer.hasNext()) { int i = seer.next(); System.out.println(i); }*/ ArraySet<Integer> aset = new ArraySet<>(); aset.add(5); aset.add(23); aset.add(42); System.out.println(aset); Iterator<Integer> aseer = aset.iterator(); /* while(aseer.hasNext()) { int i = aseer.next(); System.out.println(i); } for(int i : aset){ System.out.println(i); }*/ System.out.println(aset.equals(null)); System.out.println(aset.equals("fish") ); System.out.println(aset.equals(aset)); /* ArraySet<String> s = new ArraySet<>(); s.add(null); s.add("horse"); s.add("fish"); s.add("house"); s.add("fish"); System.out.println(s.contains("horse")); System.out.println(s.size());*/ } }
The Safest Way to Get what you Want is to Try and Deserve What you Want.