2013-04-10 2 views
1

사용자 정의 조합 MySet을 사용하여 조합 및 교차의 기본 기능을 사용하는 데 문제가 있습니다. 프로그램은 오류없이 컴파일되지만 빈 세트 만 반환합니다.HashSet에서 조합 및 교차 방법 사용

아무도 문제가있는 곳을 보지 않습니까?

public class MySet<E> extends TreeSet<E> { 
    Set<E> set; 

    public MySet(){ 
     set = null; 
    } 

    public MySet(Set<E> set){ 
     this.set = set; 
    } 

    public void union(Set<E> s){ 
     set.addAll(s); 
    } 

    public void intersection(Set<E> s){ 
     set.retainAll(s); 
    } 


} 

홈페이지 방법은

public class TestSet { 

    public static void main(String[] args) throws FileNotFoundException{ 
     File f1 = new File("courseList1.txt"); 
     File f2 = new File("courseList2.txt"); 

     Scanner scan1 = new Scanner(f1); 
     Scanner scan2 = new Scanner(f2); 

     Set<Coarse> set1 = new HashSet<Coarse>(); 
     Set<Coarse> set2 = new HashSet<Coarse>(); 

     MySet<Coarse> mySet = new MySet<Coarse>(set1); 

     String designator; 
     int number; 

     while(scan1.hasNext()){ 
      designator = scan1.next(); 
      number = scan1.nextInt(); 
      set1.add(new Coarse(designator, number)); 
     } 

     while(scan2.hasNext()){ 
      designator = scan2.next(); 
      number = scan2.nextInt(); 
      set2.add(new Coarse(designator, number)); 
     } 

     mySet.union(set2); 
     mySet.intersection(set2); 

    } 
} 

답변

0

당신이 구성을 구현하기 위해 노력하고 동시에 트리 세트를 확장,하지만 좋은 연습, 당신이 사용하는 성분 중 하나 아니고, 구현하는 것 같다 Set 인터페이스 (A TreeSet의와 백엔드) 또는 트리가 TreeSet의

class MySet<E> extends TreeSet<E> { 
     public void union(Set<E> s){ 
      addAll(s); 
     } 

     public void intersection(Set<E> s){ 
      retainAll(s); 
     } 
    } 
확장

을 설정 확장 0

사용 조성물

class MySet<E> implements Set<E> { 
     private TreeSet<E> set; 

     public MySet(TreeSet<E> set) { 
      this.set = new TreeSet<>(set); 
     } 

     public void union(Set<E> s){ 
      set.addAll(s); 
     } 

     public void intersection(Set<E> s){ 
      set.retainAll(s); 
     } 

     @Override 
     public int size() { 
      return set.size(); 
     } 

     @Override 
     public boolean isEmpty() { 
      return set.isEmpty(); 
     } 

     @Override 
     public boolean contains(Object o) { 
      return set.contains(o); 
     } 

     @Override 
     public Iterator<E> iterator() { 
      return set.iterator(); 
     } 

     @Override 
     public Object[] toArray() { 
      return set.toArray(); 
     } 

     @Override 
     public <T> T[] toArray(T[] a) { 
      return set.toArray(a); 
     } 

     @Override 
     public boolean add(E e) { 
      return set.add(e); 
     } 

     @Override 
     public boolean remove(Object o) { 
      return set.remove(o); 
     } 

     @Override 
     public boolean containsAll(Collection<?> c) { 
      return set.containsAll(c); 
     } 

     @Override 
     public boolean addAll(Collection<? extends E> c) { 
      return set.addAll(c); 
     } 

     @Override 
     public boolean retainAll(Collection<?> c) { 
      return set.retainAll(c); 
     } 

     @Override 
     public boolean removeAll(Collection<?> c) { 
      return set.removeAll(c); 
     } 

     @Override 
     public void clear() { 
      set.clear(); 
     } 

     @Override 
     public boolean equals(Object o) { 
      return set.equals(o); 
     } 

     @Override 
     public int hashCode() { 
      return set.hashCode(); 
     } 
    }