import java.util.*; import java.math.*; public class Exercise { static void assert(boolean c) { if (!c) throw new Error("Assertion failed."); } static public void main(String[] v) { e1(); e2(); e3(); e4(); e5(); e6(); } static public void e1() { Collection c = new ArrayList(); c.add("1"); c.add(null); c.add("2"); c.add(""); c.add(""); c.add("3"); c.removeAll(Arrays.asList(new String[] { null, "" })); System.out.println(c); //[1, 2, 3] assert(!c.contains("")); assert(!c.contains(null)); assert(c.contains("1")); assert(c.contains("2")); assert(c.contains("3")); } static public void e2() { System.out.println("--e2--"); Set s1 = new HashSet(Arrays.asList(new String[] {"1", "2", "3"})); Set s2 = new HashSet(Arrays.asList(new String[] {"0", "2", "4"})); // 和集合(s1 + s2) Set or = new HashSet(s1); or.addAll(s2); System.out.println(or); // [4, 3, 2, 1, 0] assert(or.contains("0")); assert(or.contains("1")); assert(or.contains("2")); assert(or.contains("3")); assert(or.contains("4")); // 差集合(s1 - s2) Set diff = new HashSet(s1); diff.removeAll(s2); System.out.println(diff); // [3, 1] assert(!diff.contains("0")); assert(diff.contains("1")); assert(!diff.contains("2")); assert(diff.contains("3")); assert(!diff.contains("4")); // 積集合(s1 * s2) Set and = new HashSet(s1); and.retainAll(s2); System.out.println(and); // [2] assert(!and.contains("0")); assert(!and.contains("1")); assert(and.contains("2")); assert(!and.contains("3")); assert(!and.contains("4")); } static public void e3() { System.out.println("--e3--"); String[] words = { "1", "2", "1", "4", "3", "2" }; String[] uniq = (String[])(new TreeSet(Arrays.asList(words))).toArray(new String[0]); for (int i = 0; i < uniq.length; i++) System.out.println(uniq[i]); // 1, 2, 3, 4 } static public void e4() { System.out.println("--e4--"); String[] words = { "c", "E", "A", "B", "d" }; Arrays.sort(words); for (int i = 0; i < words.length; i++) System.out.println(words[i]); // or Collections.reverse(Arrays.asList(words)); Arrays.sort(words, Collections.reverseOrder()); for (int i = 0; i < words.length; i++) System.out.println(words[i]); Arrays.sort(words, String.CASE_INSENSITIVE_ORDER); for (int i = 0; i < words.length; i++) System.out.println(words[i]); } static public void e5() { System.out.println("--e5--"); Set s = new TreeSet(new Comparator() { public int compare(Object o1, Object o2) { return (new BigInteger((String)o1)).compareTo( new BigInteger((String)o2) ); } }); s.add("12345678"); s.add("123"); s.add("34"); System.out.println(s); } static public void e6() { System.out.println("--e6--"); Map m = new HashMap(); m.put("apple", "red"); m.put("melon", "green"); m.put("banana", "yellow"); String[] keys = (String[])m.keySet().toArray(new String[0]); String[] values = (String[])m.values().toArray(new String[0]); for (int i = 0; i < keys.length; i++) System.out.println(keys[i]); // melon, apple, banana という出力 for (int i = 0; i < values.length; i++) System.out.println(values[i]); // green, red, yellow という出力 } }