- /**
- * 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));
- }
- }
复制代码 |
|