练习1:去除重复元素
public class ArrayListTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList al=new ArrayList();
al.add("java01");
al.add("java02");
al.add("java01");
al.add("java02");
al.add("java03");
//迭代器遍历
Iterator it=al.iterator();
while(it.hasNext())
{
sop(it.next());
//在迭代器遍历集合中元素时,循环中只能调用一次next,否则可能会出现nullElementException异常
//sop(it.next()+"---"+it.next());
}
//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;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
练习2:将自定义对象作为元素存到ArrayList集合中,并去除重复元素
public class Person {
private String name;
private int age;
public Person(String name,int age)//设置属性值
{
this.name=name;
this.age=age;
}
public String getName()//获取name值
{
return name;
}
public int getAge()//获取age值
{
return age;
}
//复写Object的Equals方法
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p=(Person)obj;//强制将obj向下转型
return this.name.equals(p.getName()) && this.age==p.getAge();
}
}
public class ArrayListTest2 {
public static void main(String[] args) {
// TODO Auto-generated method stu
ArrayList al=new ArrayList();
al.add(new Person("zhangsan",25));
al.add(new Person("zhangsan",26));
al.add(new Person("zhangsan",25));
al.add(new Person("zhangsan",26));
al.add(new Person("zhangsan",27));
al=singleElement(al);
Iterator it=al.iterator();
while(it.hasNext())
{
Person p=(Person)it.next();//将元素强制向下转型
sop(p.getName()+"---"+p.getAge());
}
}
//定义函数,去除重复元素
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))//判断是否有重复元素,cantains,remove方法其实都调用了类对象中equals方法。
newal.add(obj);
}
return newal;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
练习3: 练习:用LinkedList,模拟栈和队列的数据结构
栈:先进后出
队列:先进先出
public class duilie {
//定义LinkedList类型的变量
private LinkedList link;
public duilie()
{
//创建LinkedList对象
link=new LinkedList();
}
//定义函数实现元素的添加
public void myAdd(Object obj)
{
link.addFirst(obj);
}
//定义函数,实现按照添加的顺序取出元素
public Object FIFO()
{
return link.removeLast();
}
//定义函数,实现按照添加的逆序取出元素
public Object FILO()
{
return link.removeFirst();
}
//定义函数,判断列表是否为空
public boolean isNull()
{
return link.isEmpty();
}
//定义函数,显示列表中的元素
public void show()
{
System.out.println(link);
}
}
public class LinkedListTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
duilie dl=new duilie();
dl.myAdd("java01");
dl.myAdd("java02");
dl.myAdd("java03");
dl.myAdd("java04");
dl.myAdd("java05");
dl.show();
while(!dl.isNull())
System.out.println(dl.FIFO());
while(!dl.isNull())
System.out.println(dl.FILO());
}
}