Могу ли я попросить кого-нибудь проверить мои коллекции к экзамену SCJP? - PullRequest
2 голосов
/ 02 августа 2011

Я готовился к экзамену SCJP, теперь экзамен на Oracle Certified Professional Java SE Programmer.

Мне было трудно обернуть голову вокруг всех разных коллекций и когда их использовать.Я также люблю флэш-карты.Поэтому я попытался создать набор классов, которые по сути одинаковы, за исключением того, какую коллекцию они используют.Мне нужно будет определить, как получится вывод и каковы основные «особенности» каждой коллекции.

К сожалению, я не доверяю себе.Я хотел бы, чтобы кто-то подтвердил, что вся информация точна или отсутствует.Затем, после некоторой обратной связи / исправлений, я думаю, что это будет отличное упражнение для тех, кто пытается понять коллекции Java.

Охватываемые коллекции: HashMap, Hashtable, TreeMap, LinkedHashMap, HashSet, TreeSet, LinkedHashSet, ArrayList, Vector, LinkedList, PriorityQueue.

У меня также все файлы выделены, их можно скачать здесь: http://www.allgo.com/personal/MyCollections.zip

Заранее спасибо

import java.util.*;
import java.lang.*;
class MyItem implements Comparable{
    private String name;
    MyItem(String n){ name = n; }
    public String toString(){return name;}
    public String getName(){return name;}

    public boolean equals(Object obj){
        if(this==obj) return true;
        else if(obj==null) return false;
        else if(getName() != ((MyItem)obj).getName()) return false;
        else return true;
    }
    public int hashCode(){ return 5; }
    public int compareTo(MyItem b){return b.getName().compareTo(getName());}

}
public class MyCollections{
    public static void main(String[] args){
        MyHashMap.main(args);           System.out.println("HashMap: Hash=Unsorted, Unordered. Map=key/value pair\n##\n");
        MyHashtable.main(args);         System.out.println("Hashtable: Thread Safe. Hash=Unsorted, Unordered. Map=key/value pair\n##\n");
        MyTreeMap.main(args);           System.out.println("TreeMap: Tree=sorted. Map=key/value.\n##\n");
        MyLinkedHashMap.main(args);     System.out.println("LinkedHashMap: Linked=Maintains Insertion Order. Hash=unsorted, unordered. Map=key/value pair.\n##\n");
        MyHashSet.main(args);           System.out.println("HashSet: Hash=Unsorted, Unordered. Set=Unique. Define=equals/hashCode\n##\n");
        MyTreeSet.main(args);           System.out.println("TreeSet: Tree=Sorted. Set=Unique. Define=Comparable/Comparator\n##\n");
        MyLinkedHashSet.main(args);     System.out.println("LinkedHashSet: Liniked=Maintains Insertion Order. Hash=Unsorted. Set=Unique. Define=equals/hashCode\n##\n");
        MyArrayList.main(args);         System.out.println("ArrayList: List=Queue. Maintains insertion order, Allowed duplicates\n##\n");
        MyVector.main(args);            System.out.println("Vector: Thread Safe. ArrayList. Maintains Insertion Order, Allows duplicates\n##\n");
        MyLinkedList.main(args);        System.out.println("LinkedList: Linked=Maintaines Insertion Order. List=Queue. Advanced ArrayList with more methods.\n##\n");
        MyPriorityQueue.main(args);     System.out.println("PriorityQueue: Define=Comparable/comparator\n##\n");
    }
}
class MyHashMap{
    public static void main(String[] args){
        HashMap c = new HashMap();
        MyItem Eight = new MyItem("Eight");
        c.put(5, new MyItem("Five")); c.put(1, new MyItem("One")); c.put(8, Eight); c.put(3, new MyItem("Three"));
        c.put(4, new MyItem("Four")); c.put(1, new MyItem("1")); c.put(8, Eight); c.put(9, new MyItem("Nine"));
        c.remove(3); c.put(7, new MyItem("Seven"));
        System.out.println(c);//output?
    }
}
class MyHashtable{
    public static void main(String[] args){
        Hashtable c = new Hashtable();
        MyItem Eight = new MyItem("Eight");
        c.put(5, new MyItem("Five")); c.put(1, new MyItem("One")); c.put(8, Eight); c.put(3, new MyItem("Three"));
        c.put(4, new MyItem("Four")); c.put(1, new MyItem("1")); c.put(8, Eight); c.put(9, new MyItem("Nine"));
        c.remove(3); c.put(7, new MyItem("Seven"));
        System.out.println(c);//output?
    }
}
class MyTreeMap{
    public static void main(String[] args){
        TreeMap c = new TreeMap();
        MyItem Eight = new MyItem("Eight");
        c.put(5, new MyItem("Five")); c.put(1, new MyItem("One")); c.put(8, Eight); c.put(3, new MyItem("Three"));
        c.put(4, new MyItem("Four")); c.put(1, new MyItem("1")); c.put(8, Eight); c.put(9, new MyItem("Nine"));
        c.remove(3); c.put(7, new MyItem("Seven"));
        System.out.println(c);//output?
    }
}
class MyLinkedHashMap{
    public static void main(String[] args){
        LinkedHashMap c = new LinkedHashMap();
        MyItem Eight = new MyItem("Eight");
        c.put(5, new MyItem("Five")); c.put(1, new MyItem("One")); c.put(8, Eight); c.put(3, new MyItem("Three"));
        c.put(4, new MyItem("Four")); c.put(1, new MyItem("1")); c.put(8, Eight); c.put(9, new MyItem("Nine"));
        c.remove(3); c.put(7, new MyItem("Seven"));
        System.out.println(c);//output?
    }
}
class MyHashSet{
    public static void main(String[] args){
        HashSet c = new HashSet();
        MyItem Eight = new MyItem("Eight");
        c.add(new MyItem("Five")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Three"));
        c.add(new MyItem("Four")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Nine"));
        c.remove(3); c.add(new MyItem("Seven"));
        System.out.println(c);//output?
    }
}

class MyTreeSet{
    public static void main(String[] args){
        TreeSet c = new TreeSet();
        MyItem Eight = new MyItem("Eight");
        c.add(new MyItem("Five")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Three"));
        c.add(new MyItem("Four")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Nine"));
        c.remove(Eight); c.add(new MyItem("Seven"));
        System.out.println(c);//output?
    }
}
class MyLinkedHashSet{
    public static void main(String[] args){
        LinkedHashSet c = new LinkedHashSet();
        MyItem Eight = new MyItem("Eight");
        c.add(new MyItem("Five")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Three"));
        c.add(new MyItem("Four")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Nine"));
        c.remove(3); c.add(new MyItem("Seven"));
        System.out.println(c);//output?
    }
}
class MyArrayList{
    public static void main(String[] args){
        ArrayList c = new ArrayList();
        MyItem Eight = new MyItem("Eight");
        c.add(new MyItem("Five")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Three"));
        c.add(new MyItem("Four")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Nine"));
        c.remove(3); c.add(new MyItem("Seven"));
        System.out.println(c);//output?
    }
}
class MyVector{
    public static void main(String[] args){
        Vector c = new Vector();
        MyItem Eight = new MyItem("Eight");
        c.add(new MyItem("Five")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Three"));
        c.add(new MyItem("Four")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Nine"));
        c.remove(3); c.add(new MyItem("Seven"));
        System.out.println(c);//output?
    }
}
class MyLinkedList{
    public static void main(String[] args){
        LinkedList c = new LinkedList();
        MyItem Eight = new MyItem("Eight");
        c.add(new MyItem("Five")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Three"));
        c.add(new MyItem("Four")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Nine"));
        c.remove(3); c.add(new MyItem("Seven"));
        System.out.println(c);//output?
    }
}
class MyPriorityQueue{
    public static void main(String[] args){
        PriorityQueue c = new PriorityQueue();
        MyItem Eight = new MyItem("Eight");
        c.offer(new MyItem("Five")); c.offer(new MyItem("One")); c.offer(Eight); c.offer(new MyItem("Three"));
        c.offer(new MyItem("Four")); c.offer(new MyItem("One")); c.offer(Eight); c.offer(new MyItem("Nine"));
        System.out.println(c.peek());
        System.out.println(c.poll());
        c.offer(new MyItem("Seven"));
        System.out.println(c);//output?
    }
}

1 Ответ

3 голосов
/ 02 августа 2011

Для начала вам необходимо рефакторинг вашего кода.По сути, везде, где вы использовали «копировать пасту», не надо.

Создайте метод, подобный следующему:

private static void fill(Collection c) {
    MyItem Eight = new MyItem("Eight");
    c.add(new MyItem("Five")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Three"));
    c.add(new MyItem("Four")); c.add(new MyItem("One")); c.add(Eight); c.add(new MyItem("Nine"));
    c.remove(3); c.add(new MyItem("Seven"));
    System.out.println(c);//output?
}

Затем, вместо того, чтобы использовать ваш метод, сделайте следующее:

class MyVector{
    public static void main(String[] args){
        Vector c = new Vector();
        fill(c);
    }
}

И сделайте это для всех имеющихся у вас коллекций.

Затем сделайте аналогичное для ваших карт:

private static void fill(Map<?,?> map) {
    MyItem Eight = new MyItem("Eight");
    map.put(5, new MyItem("Five")); map.put(1, new MyItem("One")); map.put(8, Eight); map.put(3, new MyItem("Three"));
    map.put(4, new MyItem("Four")); map.put(1, new MyItem("1")); map.put(8, Eight); map.put(9, new MyItem("Nine"));
    map.remove(3); map.put(7, new MyItem("Seven"));
    System.out.println(map);//output?
}

Ваш код будет уменьшен, читаем и даже можетоднажды станет пригодным для использования.

...