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