移除ArrayList中重复的元素
5个回答
2013-03-12
展开全部
每删除一个 .size() 是变动,而导致循环的判断失败
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public static void main(String[] args){
List<String> list=new ArrayList<String>();
list.add("java");
list.add("java");
list.add("java");
list.add("java");
list.add("c++");
Map<String, String> clearMap=new HashMap<String, String>();
for (String language:list) {
if (!clearMap.containsKey(language)) {
clearMap.put(language, language);
}
continue;
}
for (String key:clearMap.keySet()) {
System.out.println(clearMap.get(key)+",");
}
}
排除重复项是不知道其中哪项是重复的,所以你这样在真是的代码中是不可用的。
你0-list.size()是不可以用的,因为你在循环这个list的时候是不可以删除的,如果删除会报exception的。
如果非要使用
则使用
Iterator<String> iterator=list.iterator();
while (iterator.hasNext()) {
if ("java".equals(iterator.next())) {
System.out.println(iterator.next());
iterator.remove();
}
}
这样使用
List<String> list=new ArrayList<String>();
list.add("java");
list.add("java");
list.add("java");
list.add("java");
list.add("c++");
Map<String, String> clearMap=new HashMap<String, String>();
for (String language:list) {
if (!clearMap.containsKey(language)) {
clearMap.put(language, language);
}
continue;
}
for (String key:clearMap.keySet()) {
System.out.println(clearMap.get(key)+",");
}
}
排除重复项是不知道其中哪项是重复的,所以你这样在真是的代码中是不可用的。
你0-list.size()是不可以用的,因为你在循环这个list的时候是不可以删除的,如果删除会报exception的。
如果非要使用
则使用
Iterator<String> iterator=list.iterator();
while (iterator.hasNext()) {
if ("java".equals(iterator.next())) {
System.out.println(iterator.next());
iterator.remove();
}
}
这样使用
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为按顺序循环的时候,你改变了list的size,后继续循环会抛异常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我自己收集的List工具类里有四种,你自己挑一个
/*
java去除List中重复的元素
如果用Set ,倘若list里边的元素不是基本数据类型而是对象,
那么请覆写Object的boolean equals(Object obj)和int hashCode()方法.
return new ArrayList(new HashSet(list));
*/
//方法一:循环元素删除
// 删除ArrayList中重复元素
public static void removeDuplicate(List list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println(list);
}
//方法二:通过HashSet剔除
// 删除ArrayList中重复元素
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void removeDuplicateBySet(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
System.out.println(list);
}
//方法三: 删除ArrayList中重复元素,保持顺序
// 删除ArrayList中重复元素,保持顺序
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println( " remove duplicate " + list);
}
/**
* 生成无重复记录的列表
* @param list
* @return
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static List newUniqueList(List list){
if(list == null || list.size() <= 0){
return list;
}
List newList = new ArrayList();
for(int i = 0; i < list.size(); i++){
if(!newList.contains(list.get(i))){
newList.add(list.get(i));
}
}
return newList;
}
/*
java去除List中重复的元素
如果用Set ,倘若list里边的元素不是基本数据类型而是对象,
那么请覆写Object的boolean equals(Object obj)和int hashCode()方法.
return new ArrayList(new HashSet(list));
*/
//方法一:循环元素删除
// 删除ArrayList中重复元素
public static void removeDuplicate(List list) {
for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {
for ( int j = list.size() - 1 ; j > i; j -- ) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println(list);
}
//方法二:通过HashSet剔除
// 删除ArrayList中重复元素
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void removeDuplicateBySet(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
System.out.println(list);
}
//方法三: 删除ArrayList中重复元素,保持顺序
// 删除ArrayList中重复元素,保持顺序
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println( " remove duplicate " + list);
}
/**
* 生成无重复记录的列表
* @param list
* @return
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static List newUniqueList(List list){
if(list == null || list.size() <= 0){
return list;
}
List newList = new ArrayList();
for(int i = 0; i < list.size(); i++){
if(!newList.contains(list.get(i))){
newList.add(list.get(i));
}
}
return newList;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询