怎么去掉arraylist里的重复数据

guye1986 2011-08-13 10:51:48
假设我有个List 里面放的是javabean 数据如下:

物理 95
数学 100
物理 100

以为物理 100和前面的物理95重复了 我想把他给去掉,请问大家有什么方法去吗?
...全文
1129 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
剑神一笑 2011-08-14
  • 打赏
  • 举报
回复
MAP("物理",95);
如果想保留95
if(!map.containsKey("物理")){
map.put("key",value);
}
如果想保留100
直接put
yanqiu520happines 2011-08-13
  • 打赏
  • 举报
回复
和二楼的意见相符,补充一下,具体是这样的:可以Map<String,double> map = new HashMap();
往里存值时,map.put("物理",95);map.put("数学",100);这时map.put("物理",100);就插不进去了,三楼的方法也很好,都可以的!
yanqiu520happines 2011-08-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 awusoft 的回复:]

重复了,你想去掉哪一个呢?去掉大的,还是小的,还是只管覆盖?
可以放在map里,key保证是唯一的
[/Quote]
map 比较简单
飞跃颠峰 2011-08-13
  • 打赏
  • 举报
回复
把‘物理’当作key放在HashMap中
遍历arraylist做判断哪些该删掉
luohuijun619 2011-08-13
  • 打赏
  • 举报
回复
可以用Set集合,还可以用循环判断去重
sunnylei258 2011-08-13
  • 打赏
  • 举报
回复
楼主 那个在数据库里面做操作吧 呵呵
zhang227xb 2011-08-13
  • 打赏
  • 举报
回复
set存第二个数据时候不会成功,需要重写equals()和hashcode()
map是直接覆盖第一个,也就是保存的是第二个
看楼主的意思是要删除第二个,那么应该用set
ctwoz 2011-08-13
  • 打赏
  • 举报
回复
map可以实现,set也可以实现,map中的键值对好像更好一点
smallPipe 2011-08-13
  • 打赏
  • 举报
回复
一楼正解:set可以存放不重复的javabean,至于重不重复的标准,就是看javabean的equals方法了。
两个javabean对象equals返回true,就认为这两个对象重复了。
当然,还要重写hashcode()方法
awusoft 2011-08-13
  • 打赏
  • 举报
回复
重复了,你想去掉哪一个呢?去掉大的,还是小的,还是只管覆盖?
可以放在map里,key保证是唯一的
Fly_m 2011-08-13
  • 打赏
  • 举报
回复
放到set里面去。
javaBean里面定义,equals方法,
return this.分数=other.分数
mr_orange_klj 2011-08-13
  • 打赏
  • 举报
回复
用hashmap就可以,名称对成绩。写一个放入方法:放入前用contains()方法做个判断,如果返回值是true,什么都不干;如果是false,就用put()方法放进去。contains()方法和put()方法都在jdk的Java.util.Hashmap里写明了。
kuangzhiyong 2011-08-13
  • 打赏
  • 举报
回复
首先遍历List,然后将遍历的元素放入到HashMap类型中的map中,然后再讲map中的内容放入到list中去。
代码如下:
//KeyValue类
public class KeyValue <K,V> implements Serializable{//<K,V>类型参数
private K key;
private V value;

public KeyValue(){}
public KeyValue(K key,V value){
this.key = key;
this.value = value;
}
@Override
public String toString(){
return "[KEY]:"+key+"[VALUE]:"+value;
}
public K getKey() {
return key;
}
public void setKey(K key) {
this.key = key;
}
public V getValue() {
return value;
}
public void setValue(V v) {
this.value = v;
}

}
//ArrayList处理方法
public static List<KeyValue<String,Integer>> handlerReList(List<KeyValue<String,Integer>> list){
Map<String,Integer> map = new HashMap<String,Integer>();
List <KeyValue<String,Integer>>returnList = new ArrayList<KeyValue<String,Integer>>();
for(KeyValue<String,Integer> key:list){
map.put(key.getKey(),key.getValue());
}
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for(Map.Entry<String, Integer> me:entrySet){
returnList.add(new KeyValue(me.getKey(),me.getValue()));
}
return returnList;
}
江清清 2011-08-13
  • 打赏
  • 举报
回复
使用HashMap 使用键值对
lacus87 2011-08-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yanqiu520happines 的回复:]

和二楼的意见相符,补充一下,具体是这样的:可以Map<String,double> map = new HashMap();
往里存值时,map.put("物理",95);map.put("数学",100);这时map.put("物理",100);就插不进去了,三楼的方法也很好,都可以的!
[/Quote]

这时候第二个插的"物理",100 会把前面的"物理",95 覆盖掉的
彩票虫虫 2011-08-13
  • 打赏
  • 举报
回复
HashSet<String>
flyingZippo 2011-08-13
  • 打赏
  • 举报
回复
楼上都是正解啊。。。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧