public class Generics { // public static void printArray(int[] array) { // String str = "["; // // // length, length(), size() // for (int i = 0; i < array.length; ++i) { // int elem = array[i]; // // str = str + " " + elem; // } // str += " ]"; // // System.out.println(str); // } // public static void printArray(int[] array) { // String str = "["; // // // enhanced for loop, for-each loop // // for each element in array (collection) // // for (Type var : collectionName) // // doesn't work (1) if index is needed // // (2) if update to collection is needed // for (int elem : array) { // str = str + " " + elem; // } // str += " ]"; // // System.out.println(str); // } // // // method overloading: same return type, same method name, // // different parameter list (type, order, length) // public static void printArray(boolean[] array) { // String str = "["; // // for (boolean elem : array) { // str = str + " " + elem; // } // str += " ]"; // // System.out.println(str); // } // generic version: works only for Object/class types // must use .equals to compare public static void printArray(E[] array) { String str = "["; for (E elem : array) { str = str + " " + elem; } str += " ]"; System.out.println(str); } // generic contains: returns true if target is found in array // works for any Object/class type data public static boolean contains(E[] array, E target) { for (E elem : array) { if (target.equals(elem)) { // end as soon as you have an answer return true; } } return false; } public static void main(String[] args) { Integer[] a1 = { }; Integer[] a2 = { 10 }; Integer[] a3 = { 3, 6, 9, 12, 15 }; Boolean[] b1 = { true, false, false, true }; printArray(a1); printArray(a2); printArray(a3); printArray(b1); // test generic printArray String[] sArr1 = { "Four", "Scores", "And" }; String[] sArr2 = { "Hello", "World", "Hi", "Bye", "Wecome" }; printArray(sArr1); printArray(sArr2); System.out.println("is 10 in a1? " + contains(a1, 10)); // f System.out.println("is 10 in a2? " + contains(a2, 10)); // t System.out.println("is 3 in a3? " + contains(a3, 3)); // t System.out.println("is 15 in a3? " + contains(a3, 15)); // t System.out.println("is 9 in a3? " + contains(a3, 9)); // t System.out.println("is 1 in a3? " + contains(a3, 1)); // f System.out.println("is 11 in a3? " + contains(a3, 11)); // f System.out.println("is Hello in sArr2? " + contains(sArr2, "Hello")); System.out.println("is Welcome in sArr2? " + contains(sArr2, "Welcome")); System.out.println("is Hi in sArr2? " + contains(sArr2, "Hi")); System.out.println("is Hey in sArr2? " + contains(sArr2, "Hey")); String s1 = "Hello"; String s2 = new String("Hello"); System.out.println("s1 == s2 ? " + (s1 == s2)); System.out.println("s1.equals(s2) ? " + (s1.equals(s2))); } }