黑马程序员技术交流社区
标题:
ArrayList中的一个问题
[打印本页]
作者:
咕咕猫
时间:
2013-9-24 13:12
标题:
ArrayList中的一个问题
本帖最后由 咕咕猫 于 2013-9-24 14:20 编辑
将自定义对象作为元素存到ArrayList集合中,并去除重复元素.
import java.util.*;
class Demo
{
public static void main(String[]args)
{
ArrayList al= new ArrayList();//建立一个ArrayList集合
al.add("java01");//添加与元素
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java03");
al.add("java04");
al=quchu(al);
sop(al);
}
public static ArrayList quchu(ArrayList al)//去除重复元素功能
{
ArrayList ap = new ArrayList();
Iterator it = al.iterator();//迭代器
while (it.hasNext())
{
Object p = it.next();//{:soso_e132:}疑问这里为什么要定义一个Object类的对象,ArrayList的为什么不行呢。帮忙解释下 谢谢啦
if (!ap.contains(p))//如果ap中没有p那么就将p存进ap中
{
ap.add(p);
}
}
return ap;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
作者:
369833818
时间:
2013-9-24 13:18
使用迭代器iterator的时候并不知道ArrayList里面装的对象是什么,所以用的是Object,你可以通过使用泛型来避免类型转换,定义集合和迭代器时使用ArrayList<t>,iterator<T>.
作者:
369833818
时间:
2013-9-24 13:19
使用迭代器iterator的时候并不知道ArrayList里面装的对象是什么,所以用的是Object,你可以通过使用泛型来避免类型转换,定义集合和迭代器时使用ArrayList<t>,iterator<T>.
作者:
蔚蓝天色
时间:
2013-9-24 13:24
Object 是所有类的基类,所以无论你的a1给obj的是八种基本数据类型中的那一种,都可以接收,Object接收八种基本数据类型的时候,都会发生类似:int到Integer到Object的装箱过程。
作者:
梁贺
时间:
2013-9-24 13:38
Iteratot用的时候因为它事先不知道你要转换的类型,所以是Object类型。并且这就是泛型的好处,规定它的类型,就可以省略类型转换了。java里好多事先不知道的类型都定义Object类型,程序员可以根据个人需要进行强转。
作者:
暮雨
时间:
2013-9-24 13:48
本帖最后由 暮雨 于 2013-9-24 13:49 编辑
很显然你往ArrayList存放的String,对ArrayList进行遍历可有以下几种方法,1.for循环,由于ArrayList实质是以数组形式存放数据的,所以在进行for循环时可以拿到任意的一个值,
for(int i=0;i<arrayList.length;i++){
String s1 = arrayList.get(i);
}
复制代码
使用Iterator遍历就要涉及到泛型的问题,有两种写法
for(Iterator<String> it = arrayList.iterator;it.hasNext();){
String s1 = it.next();
}
复制代码
另外一种就是拿出来强转
for(Iterator it = arrayList.iterator;it.hasNext();){
String s1 =(String) it.next();
}
复制代码
当然也可以像你那样先取出,默认是object类型,然后你再转化为自己想要的类型。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2