黑马程序员技术交流社区
标题:
关于数组去重复,算法的问题
[打印本页]
作者:
nxp1986
时间:
2014-9-4 17:37
标题:
关于数组去重复,算法的问题
本帖最后由 nxp1986 于 2014-9-4 17:40 编辑
做基础测试题,不适用泛型,怎么弄都把集合转不了数组了....求大牛解惑,这个代码很繁琐的说,只是想用嘴基础的写出来,没想到出现这么多问题
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test08 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 思路:
* 1、既然是数组需要去除重复,但是数组中又没有这样的方法。就需要考虑使用其他的对象方法实现。
* 2、数组和集中中ArrayList集合很像,考虑把数组转换成ArrayList集合,然后使用ArrayList集合可以实现这个功能。
*
* 步骤:
* 1、把数组转换成ArrayList集合。
* 2、使用ArrayList集合去除重复元素。
* 3、在把ArrayList转换成数组来完成。
*/
//创建一个数组
int[] arr = {4,2,4,6,1,2,4,7,8};
//调用功能实现去除重复。
arrayRemove(arr);
System.out.println(arr);
}
public static void arrayRemove(int[] arr) {
//创建一个集合
List list = new ArrayList();
//1、把数组转换成集合
for (int i = 0; i < arr.length; i++) {
list.add(arr[i]);
}
// System.out.println(list);//验证是否转换成功
//2、使用集合中的方法,去除重复元素
//定义一个功能实现集合区重复
singleElements(list);
//3、把集合转换成数组
Integer [] buf = (Integer[]) list.toArray(new Integer[list.size()]);
}
/*
* 既然是需要集合去重复,因为去除重复后的元素都是唯一性的。
* 定义一个临时集合容器,把唯一性的元素存储进去即可
*/
public static void singleElements(List list) {
//定义一个临时集合容器
List temp = new ArrayList();
//遍历原集合
for (Iterator it = list.iterator(); it.hasNext();) {
Object obj = (Object) it.next();
//判断遍历出来的元素在临时容器中是否存在,如果不存在就存储
if(!temp.contains(obj)){
temp.add(obj);
}
}
//把原容器清空,同时把临时容器存储到原容器中
list.clear();
list.addAll(temp);
}
}
复制代码
为什么定义一个方法就实现不了呢?
作者:
yuli2039
时间:
2014-9-4 22:11
1、楼主为什么不用Set集合?
2、一定要用List的话,你第一步将集合变数组的时候就可以在遍历数组的过程中判断集合中是否有该元素,没有就添加添加,有就继续!为什么还要有之后的集合去重复的步骤?完全多余啊
作者:
ItJack
时间:
2014-9-5 13:31
可以用HashSet来做,因为HashSet集合中的数据不能重复。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2