假设要将下列一笔数据存到数据库中,其中ID, Year, Age三个字段组成主键:CardID Year Age
1 2010-10-10 10
2 2010-10-10 10
3 2010-10-10 12
3 2010-10-10 12
4 2010-10-10 12
4 2010-10-10 12在存入数据库前, 需要先对数据进行检验, 看看是否有重复的记录,如有重复的记录, 要指出第几行重复,例如 上面的第国行和第六行重复了。上面的每条数据现在是存在一个对象里,各个对象放在了一个List中, 要什么比较好的算法判断数据重复的问题?
1 2010-10-10 10
2 2010-10-10 10
3 2010-10-10 12
3 2010-10-10 12
4 2010-10-10 12
4 2010-10-10 12在存入数据库前, 需要先对数据进行检验, 看看是否有重复的记录,如有重复的记录, 要指出第几行重复,例如 上面的第国行和第六行重复了。上面的每条数据现在是存在一个对象里,各个对象放在了一个List中, 要什么比较好的算法判断数据重复的问题?
放Map<对象,Integer>里,
Integer里放对象的数字
select * from tbl a where rowid not in (select max(b.rowid)
from tbl b where a.CardID=b.CardID and a.Year = b.Year
and a.Age=b.Age);
上面是查出来重复的。然后出入 List中。。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;public class ListRepeat { /**
* @param args
*/
public static void main(String[] args) {
String s1 = "12010-10-1010";
String s2 = "12010-10-1010";
String s3 = "22010-10-1010";
String s4 = "32010-10-1010";
String s9 = "32010-10-1010";
String s8 = "32010-10-1010";
String s7 = "32010-10-1010";
String s6 = "32010-10-1010";
String s5 = "32010-10-1010";
List<String> list1 = new ArrayList<String>();
list1.add(s1);
list1.add(s2);
list1.add(s3);
list1.add(s4);
list1.add(s5);
list1.add(s6);
list1.add(s7);
list1.add(s8);
list1.add(s9);
Map<String,Object> hashMap = new HashMap<String,Object>();
for(int i =1;i<=list1.size();i++){
if(!hashMap.containsKey(list1.get(i-1))){
hashMap.put(list1.get(i-1), i);
}else{
System.out.println("重复 : 第"+i+"行。和 第"+hashMap.get(list1.get(i-1))+"行重复" );
}
}
}}
在这类中从新写 equals(Object other) {
if(this.CardID.equals(other.CardID)&&this.Year .equals(other.Year )&&this.Age .equals(other.Age )) return true;
}
如果 CardID Year Age 都相同在list做循环 如果 (!dataList.contains(obj)) 就添加进去思路 剩下的自己想吧