日期:2014-05-20  浏览次数:20784 次

去掉数据库中重复的内容,求高效率解法!
小弟要去除数据库中重复的内容,自己写了方法(如下),但是自己感觉效率太低,因为数据库中有几百万条的数据,求高手给一个高效率的方法。
Java code

        List<String> list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("a");
        list.add("c");
        list.add("c");
        list.add("c");
        list.add("d");
        
        for (int i = 0; i < list.size(); i++) {
            for (int j = i+1; j < list.size(); j++) {
                if(list.get(i).equals(list.get(j))){
                    list.remove(j);
                    j--;
                }
            }
        }
        
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }




------解决方案--------------------
Java code
import java.util.HashSet;
import java.util.Iterator;

class User{
    String name;
    int value;
    
    User(String name, int value) {
        this.name = name;
        this.value = value;
    }
    
    public boolean equals(Object o) {
        if (!(o instanceof User))
            return false;
        return hashCode() == o.hashCode();
    }
    
    public int hashCode() {
        return name.hashCode();
    }
    
    public String toString() {
        return String.format("name = %s, value = %d", name, value);
    }
}

public class test {
    
    public static void main(String[] args) {
        HashSet<User> set = new HashSet<User>();
        User u1 = new User("aaa", 1);
        User u2 = new User("bbb", 2);
        User u3 = new User("aaa", 3);
        set.add(u1);
        set.add(u2);
        set.add(u3);
        Iterator<User> iter = set.iterator();
        while (iter.hasNext())
            System.out.println(iter.next());
    }
}