set:
public class BSTSet<E extends Comparable<E>> implements Set<E> { private BST<E> bst; public BSTSet(){ bst=new BST<>(); } @Override public int getSize(){ return bst.size(); } @Override public boolean isEmpty(){ return bst.isEmpty(); } @Override public void add(E e){ bst.add(e); } @Override public boolean contains(E e){ return bst.contains(e); } @Override public void remove(E e){ bst.remove(e); } }
public class LinkedListSet<E> implements Set<E> { private LinkedList<E> list; public LinkedListSet(){ list=new LinkedList<>(); } @Override public int getSize(){ return list.getSize(); } @Override public boolean isEmpty(){ return list.isEmpty(); } @Override public boolean contains(E e){ return list.contains(e); } @Override public void add(E e){ if(!list.contains(e)) list.addFirst(e); } @Override public void remove(E e){ list.removeElement(e); } }
public class Main { private static double testSet(Set<String> set,String fileName){ long startTime=System.nanoTime(); System.out.println(fileName); ArrayList<String> words=new ArrayList<>(); if(FileOperation.readFile(fileName, words)){ System.out.println("Total words:"+words.size()); for(String word:words) set.add(word); System.out.println("Total different words: "+set.getSize()); } long endTime=System.nanoTime(); return (endTime-startTime)/1000000000.0; } public static void main(String[] args){ String fileName="a-tale-of-two-cities.txt"; BSTSet<String> bstSet=new BSTSet<String>(); double time1=testSet(bstSet, fileName); System.out.println("BST Set:"+time1+" s"); System.out.println(); LinkedListSet<String> linkedListSet=new LinkedListSet<String>(); double time2=testSet(linkedListSet, fileName); System.out.println("Linked List Set:"+time2+" s"); } }
原文:https://www.cnblogs.com/sunliyuan/p/10639075.html