一、使用LinkedList模拟一个堆栈或者队列数据结构
堆栈:先进后出
队列:先进先出(FIFO)
1、堆栈
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
Queue queue=new Queue();
queue.myadd("a");
queue.myadd("b");
queue.myadd("c");
queue.myadd("d");
while(!queue.isNull())
System.out.println(queue.myget());
}
}
class Queue{
private LinkedList link;
Queue(){
link=new LinkedList();
}
public void myadd(Object obj){
link.add(obj);
}
public Object myget(){
return link.removeLast();//移除并返回此列表的最后一个元素。
}
public boolean isNull(){
return link.isEmpty();
}
}
运行结果为:
d
c
b
a
2、队列
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
Queue queue=new Queue();
queue.myadd("a");
queue.myadd("b");
queue.myadd("c");
queue.myadd("d");
while(!queue.isNull())
System.out.println(queue.myget());
}
}
class Queue{
private LinkedList link;
Queue(){
link=new LinkedList();
}
public void myadd(Object obj){
link.add(obj);
}
public Object myget(){
//return link.removeLast();//移除并返回此列表的最后一个元素。
return link.removeFirst(); //移除并返回此列表的第一个元素。
}
public boolean isNull(){
return link.isEmpty();
}
}
运行结果为:
a
b
c
d
二、
1、去除ArrayList中的重复元素
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList arrayList=new ArrayList();
arrayList.add("a");
arrayList.add("a");
arrayList.add("b");
arrayList.add("c");
arrayList.add("c");
arrayList.add("c");
sop(arrayList);
sop(singleElement(arrayList));
}
public static ArrayList singleElement(ArrayList arr){
//定义一个临时容器
ArrayList newArrayList=new ArrayList();
Iterator iterator=arr.iterator();
while(iterator.hasNext()){
Object object=iterator.next();
if(!newArrayList.contains(object)){
newArrayList.add(object);
}
}
return newArrayList;
}
public static void sop(Object obj){
System.out.println(obj);
}
}
运行结果为:
[a, a, b, c, c, c]
[a, b, c]
2、将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
比如:存人这个对象,同姓名同年龄,视为同一人,为重复元素。
思路:
(1)、对人进行描述,将数据封装进入对象。
(2)、定义容器,将人存入。
(3)、取出。
import java.util.ArrayList; import java.util.Iterator; public class ArrayListTest1 { public static void main(String[] args) { ArrayList arr=new ArrayList(); arr.add(new Person("wr1", 25)); arr.add(new Person("wr1", 25)); arr.add(new Person("wr2", 25)); arr.add(new Person("wr2", 25)); arr.add(new Person("wr3", 25)); arr=singleElement(arr); Iterator iterator=arr.iterator(); while(iterator.hasNext()){ //Object object=iterator.next(); //Person p=(Person)object; Person p=(Person)iterator.next(); sop(p.getName()+"::"+p.getAge()); } } public static ArrayList singleElement(ArrayList arr){ //定义一个临时容器 ArrayList newArrayList=new ArrayList(); Iterator iterator=arr.iterator(); while(iterator.hasNext()){ Object object=iterator.next(); if(!newArrayList.contains(object)){ newArrayList.add(object); } } return newArrayList; } public static void sop(Object obj){ System.out.println(obj); } } class Person{ private String name; private int age; Person(String name,int age){ this.name=name; this.age=age; } public boolean equals(Object obj){ if(!(obj instanceof Person)){ return false; } Person p=(Person)obj; return this.name.equals(p.name) && this.age==p.age; } public String getName(){ return name; } public int getAge(){ return age; } }
运行结果为:
wr1::25
wr2::25
wr3::25