黑马程序员技术交流社区
标题:
怎么给ArrayLst中的元素去掉重复的值?
[打印本页]
作者:
wangning9130
时间:
2013-12-16 22:20
标题:
怎么给ArrayLst中的元素去掉重复的值?
各位。已知有一个ArrayLst 集合。里面有重复的值,现在的需求
是怎么把这个集合中的重复的值去掉,剩下的保留到原集合中。
作者:
ISAI
时间:
2013-12-16 22:31
package cn.itcast.list.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ArrayListTest2 {
/**
* @param args
*/
public static void main(String[] args) {
/*
* 练习2:定义功能,请除去ArrayList集合中的重复元素。
*
*
*/
List list = new ArrayList();
list.add("abc1");
list.add("abc4");
list.add("abc2");
list.add("abc1");
list.add("abc4");
list.add("abc4");
list.add("abc2");
list.add("abc1");
list.add("abc4");
list.add("abc2");
System.out.println(list);
singleElement2(list);
System.out.println(list);
}
/**
* 去除重复元素方式二:
* 思路:
* 1,最后唯一性的元素也很多,可以先定义一个人容器用于存储这些唯一性的元素。
* 2,对原有容器进行元素的获取,并到临时容器中去判断是否存在。容器本身就有这个功能,判断元素是否存在。
* 3,存在就不存储,不存在就存储。
* 4,遍历完原容器后,临时容器中存储的就是唯一性的元素。
*
*/
public static void singleElement2(List list){
//1, 定义一个临时容器。
List temp = new ArrayList();
//2, 遍历原容器。
for (Iterator it = list.iterator(); it.hasNext();) {
Object obj = (Object) it.next();
//3, 在临时容器中判断遍历到的元素是否存在。
if(!temp.contains(obj)){
//4,如果不存在,就存储到临时容器中。
temp.add(obj);
}
}
//5, 将原容器清空。
list.clear();
//6, 将临时容器中的元素都存储到原容器中。
list.addAll(temp);
}
/**
* 定义功能。去除重复元素。
*/
public static void singleElement(List list){
for(int x=0; x<list.size()-1; x++){
Object obj_x = list.get(x);
for(int y=x+1; y<list.size(); y++){
if(obj_x.equals(list.get(y))){
list.remove(y);
y--;
}
}
}
}
}
复制代码
作者:
李红亮
时间:
2013-12-16 22:32
本帖最后由 李红亮 于 2013-12-16 22:42 编辑
import java.util.*;
/*
去除ArrayList集合中的重复元素。
思路:1先定义一个新的ArrayList集合,作为临时容器,
*/
class ArrayListTest
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java01");
al.add("java02");
al.add("java01");
sop(al);
al = singleElement(al);
sop(al);
}
public static ArrayList singleElement(ArrayList al)
{
//定义一个临时容器。
ArrayList newAl = new ArrayList();
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next();
if(!newAl.contains(obj))
newAl.add(obj);
}
return newAl;
}
}
作者:
李红亮
时间:
2013-12-16 22:38
本帖最后由 李红亮 于 2013-12-16 22:41 编辑
刚才按错了,还没写完就按发表了,⊙﹏⊙b汗
import java.util.*;
/*
去除ArrayList集合中的重复元素。
思路:1先定义一个新的ArrayList集合,作为临时容器,
2 对旧集合进行遍历,每次取出旧集合里面的元素时,先判断一下在临时容器中有没有存在这个元素.
3如果没有存在就把这个元素存放到临时容器里面,如果存在了就不存了
4 遍历完旧集合后,把临时容器(也就是新定义的集合)返回去给那个需要去掉重复元素的集合就OK了
下面的例子可能对你有帮助,你看一下
*/
class ArrayListTest
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java01");
al.add("java02");
al.add("java01");
sop(al);
al = singleElement(al);
sop(al);
}
public static ArrayList singleElement(ArrayList al)
{
//定义一个临时容器。
ArrayList newAl = new ArrayList();
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next();
if(!newAl.contains(obj))
newAl.add(obj);
}
return newAl;
}
}
作者:
雷洋
时间:
2013-12-16 22:57
思路
1. 再定义一个ArrayList集合
2. 迭代老集合 ,将迭代到的老集合中的元素,去新集合中 看看包含不包含
3. 如果不包含,就将老集合中的元素,存储到新集合
4. 如果包含,就不存
5. 迭代老集合完毕,新集合中,就是去掉重复元素的结果
import java.util.*;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList al = new ArrayList();
al.add("mayi");
al.add("xiaoqiang");
al.add("xiaoming");
al.add("mayi");
al.add("xiaoqiang");
System.out.println(al);
al = method(al);
System.out.println(al);
}
public static ArrayList method(ArrayList al){
//1. 再定义一个ArrayList集合
ArrayList newal = new ArrayList();
// 2. 迭代老集合 ,将迭代到的老集合中的元素,去新集合中 看看包含不包含
Iterator it = al.iterator();
while( it.hasNext()){
// 3. 如果不包含,就将老集合中的元素,存储到新集合
Object o = it.next();
if(!newal.contains(o)){
newal.add(o);
}
}
return newal;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2