关于去除Arraylist中重复数据的疑问 有一段代码HashSet h = new HashSet(arlList); arlList.clear(); arlList.addAll(h); arlList是一个ArrayList为什么运行了上面代码后就可以去除其中重复的值,不是很明白,求解释 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好象HashSet的有數據是不能重復的 HashSet是不能重复数据的,这个还有解释,自己看API吧 自己去看HashSet的源代码,这是HashMap的put的源代码; public V put(K key, V value) { if (key == null) return putForNullKey(value); int hash = hash(key.hashCode()); int i = indexFor(hash, table.length); for (Entry<K,V> e = table[i]; e != null; e = e.next) { Object k; if (e.hash == hash && ((k = e.key) == key || key.equals(k))) { V oldValue = e.value; e.value = value; e.recordAccess(this); return oldValue; } } modCount++; addEntry(hash, key, value, i); return null; }HashSet里面的add方法就是调用的这个方法,自己看看什么都明白了 请翻书...set接口不允许存储相同对象也就是equals / hashcode相同addAll函数遍历原集合,插入到新set中,自然就没有重复对象了 HashSet不允许重复元素,具体与底层实现有关。 clear方法清空arraylist中的元素;addall把set中的元素全都拷贝进arraylist中,set的元素没有重复的,所以arraylist中此时没有重复元素了 各位已经说的很详细了,建议lz把 list、map、collection等的异同点好好看看 本质简单来说就是对hashcode和eques的重写 你用了 Set, 建议你看看 new HashSet(arlList)的源码 Tomcat启动时报错 请教大家一个关于过滤器的问题 webservice部署出错 一个困了将近一个星期的SSH问题!!!请高手们帮帮忙看一下 求助 关于HTMLmail和视频的问题 请问使用Jdom如何读取大文件XML(超过100M)? spring+hibernate+struts项目出问题了,MM程序员求助! J Builder7+WebLogic7,编写了调用EJB的.jsp页面,当在Builder中打开WebLogic服务器时可以执行,但如果单独打开WebLogic服务器的时候却无 这句HQL语句,那里问题? java文件下载问题 求指教,这样对程序有没有影响,什么原因,怎么改?
这是HashMap的put的源代码; public V put(K key, V value) {
if (key == null)
return putForNullKey(value);
int hash = hash(key.hashCode());
int i = indexFor(hash, table.length);
for (Entry<K,V> e = table[i]; e != null; e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
} modCount++;
addEntry(hash, key, value, i);
return null;
}HashSet里面的add方法就是调用的这个方法,自己看看什么都明白了
set接口不允许存储相同对象
也就是equals / hashcode相同addAll函数遍历原集合,插入到新set中,自然就没有重复对象了
addall把set中的元素全都拷贝进arraylist中,set的元素没有重复的,所以arraylist中此时没有重复元素了