黑马程序员技术交流社区
标题:
一个区分ArrayList、LinkedList、Vector的小例子:
[打印本页]
作者:
岁月无情
时间:
2015-6-4 22:47
标题:
一个区分ArrayList、LinkedList、Vector的小例子:
/**
* Vector功能与ArrayList一样,只是线程不安全
* ArrayList底层用数组实现,查找快,增删慢,线程不安全
* LinkedList底层用链表实现,增删快,查找慢。
*
*
*/
import java.util.*;
class Person {
String name;
int age;
public Person(String name,int age){
this.age=age;
this.name=name;
}
public String toString(){
return name+"@"+age;
}
}
复制代码
public class Test {
public static Person findLuckyPerson(LinkedList<Person> list){
//得到迭代器,指针指向第一个元素的前一个位置
Iterator<Person> iter=list.iterator();
int count=0; //用于计数
while(list.size()>1){ //当还有多于1个元素时就继续计数
count++;
//通过迭代器调用next方法,指针不断向后面移动,
//每迭代一个元素,表示当前数数的人
Person p=iter.next();
if(count%3==0)
iter.remove();
//如果数数被三整除,就通过迭代器把这个元素从list集合移除去
if(!iter.hasNext()){//判断迭代器是否走到集合的末尾
iter=list.iterator();
//如果迭代器访问完一遍list集合,就生成新的指向list第一个元素前面一个的迭代器
//该迭代器下次调用next方法就是上一轮结束后最前面的人
}
}
return list.get(0);
}
复制代码
public static void main(String[] args) {
Person p1=new Person("大毛",7);
Person p2=new Person("二毛",7);
Person p3=new Person("三毛",7);
Person p4=new Person("四毛",7);
Person p5=new Person("五毛",7);
//Vector的使用
//Vector也可以获取枚举对象,也可通过iterator()方法获取Iterator迭代对象
System.out.println("Vector的使用:");
Vector<Person> v=new Vector<Person>();
v.add(p1);
v.add(p2);
v.add(p3);
v.add(p4);
v.add(p5);
Enumeration<Person> enu=v.elements();
while(enu.hasMoreElements()){
System.out.println(enu.nextElement());
}
//ArrayList的使用
//ArrayList没有elements方法来获取Enumeration枚举对象
System.out.println("ArrayList的使用:");
ArrayList<Person> arr=new ArrayList<Person>();
arr.add(p1);
arr.add(p2);
arr.add(p3);
arr.add(p4);
arr.add(p5);
Iterator<Person> iter=arr.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
//LinkedList的使用
//实现一个小程序,让5个从1到4依次编号孩子手拉手排成一个圈,从1开始依次报数,
//报到可以被3整除的孩子出列,问最后剩下的孩子的编号是多少号?
//分析:5个孩子排个圈,可以用LikedList来做
System.out.println("LinkedList的使用:");
LinkedList<Person> link=new LinkedList<Person>();
link.add(p1);
link.add(p2);
link.add(p3);
link.add(p4);
link.add(p5);
System.out.println(findLuckyPerson(link));
}
}
复制代码
作者:
java8023
时间:
2015-6-5 00:49
不错 谢谢分享
作者:
嘎路的米
时间:
2015-6-5 07:34
明白啦,原来是每次迭代器指针走到最后时,再让指针从头开始走。
但是ArrayList不是也一样可以求解问题吗,为什么偏要用LinkedList集合呢?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2