黑马程序员_<<List练习>>

来源:互联网 发布:java 单元测试框架 编辑:程序博客网 时间:2024/05/23 12:18

--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------


1.     队列

      模拟队列:队列的特点:先进先出

 

 package www.fuxi.jihe;importjava.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.LinkedList;import java.util.List; /* * 思路: * 1.队列的特点是先进先出 * 2.我们添加的时候,每次就把其放到第一位,然后取出的时候,就从最后一位来读取 * */public classDuiLie {      private LinkedList list =null;  public DuiLie(){     list = new LinkedList();  }      /* 添加元素 */      public void addList(Object ob) {           list.addFirst(ob);// 添加到第一位      }       /* 获取元素 */      public Object getList() {           return list.removeLast();// 删除元素,并且把删除的元素返回,但还是如果空的话,那就有异常,所以读取的时候,先判断是否为空      }       /* 判断 */      public boolean isEmpty() {           return list.isEmpty();      }       public static void main(String[] args) {           DuiLie ll = new DuiLie();           ll.addList("zhangsan");// 如队列           ll.addList("lisi");           ll.addList("wangwu");           while (!ll.isEmpty()) {                 System.out.println(ll.getList());//出队           }      } } 结果:zhangsanlisiwangwu


 

2. 栈

     栈的特点:先进后出

 

package www.fuxi.jihe; import java.util.LinkedList; /*栈 * 思路: * 1.栈的特点是:先进后出 * 2.每次入栈的时候,都放到第一位,那么取出的时候,也从第一位取出 * */public class Zhan {  private LinkedList list = null;   public Zhan() {    list = new LinkedList();  }  /* 添加元素 */  public void addList(Object ob) {    list.addFirst(ob);// 添加到第一位  }   /* 获取元素 */  public Object getList() {    return list.removeFirst();// 删除元素,并且把删除的元素返回,但还是如果空的话,那就有异常,所以读取的时候,先判断是否为空  }   /* 判断 */  public boolean isEmpty() {    return list.isEmpty();  }   public static void main(String[] agrs) {    Zhan ll = new Zhan();    ll.addList("zhangsan");// 入栈    ll.addList("lisi");    ll.addList("wangwu");    while (!ll.isEmpty()) {      System.out.println(ll.getList());// 出栈    }  }}结果:wangwulisizhangsan


 

3.     去除重复元素

     思路:(ArrayList)

        将集合中的元素一个一个的读取出来,然后放到一个新的集合中,在放到新的集合中之前,看新的集合中是否存在此元素,如果存在此元素,那么就不存入,要是不存在,则存到新的集合中。

 

   

package www.fuxi.jihe; import java.util.ArrayList;import java.util.Iterator;import java.util.List; public class ArrayListDemo {  /* 去掉重复元素的方法 */  public List getRepElement(List list) {     List newList = new ArrayList();    for (Iterator it = list.iterator(); it.hasNext();) {      Object ob = it.next();      if (!newList.contains(ob)) {         newList.add(ob);      }    }    return newList;  }   public static void main(String[] args) {    ArrayListDemo demo = new ArrayListDemo();    ArrayList list = new ArrayList();    list.add("java01");    list.add("java02");    list.add("java03");    list.add("java03");    list.add("java02");    list.add("java05");    System.out.println("含有重复元素的集合:" + list);    list = (ArrayList)demo.getRepElement(list);    System.out.println("去掉重复元素的集合:" + list);  } }结果:含有重复元素的集合:[java01, java02, java03, java03, java02, java05]去掉重复元素的集合:[java01, java02, java03, java05] 

4.     存储自定义对象

      自定义类,然后把其对象存储到集合中,然后去除相同的元素,我们要从写equals()方法,让他们按照自己定义的比较方式比较,名称和名字都一样,那么这两个对象才相同,否则不是同一个对象。

当集合进行判断是否包含(contains())此对象的时候,默认的调用了对象的equals()方法

  

      

package www.fuxi.jihe; import java.util.ArrayList;import java.util.Iterator; class Person {  private String name;  private int age;   public Person(String name, int age) {    super();    this.name = name;    this.age = age;  }   public String getName() {    return name;  }   public int getAge() {    return age;  }   public boolean equals(Object ob) {    if (!(ob instanceof Person)) {      return false;    }    Person p = (Person) ob;    return this.name.equals(p.name) && this.age == p.age;  }} class ArrayListDemo {  public static void show(ArrayList list) {    Iterator it = list.iterator();    while (it.hasNext()) {      Person p = (Person) it.next();      System.out.println(p.getName() + "---" + p.getAge());    }  }   public static ArrayList singList(ArrayList l) {    ArrayList newList = new ArrayList();    Iterator it = l.iterator();    while (it.hasNext()) {      Object ob = it.next();      if (!newList.contains(ob)) {         newList.add(ob);      }    }    return newList;  }   public static void main(String[] args) {    ArrayList ps = new ArrayList();    ps.add(new Person("张三", 23));    ps.add(new Person("李四", 22));    ps.add(new Person("李四", 22));    ps.add(new Person("李四", 22));    ps.add(new Person("王五", 24));    ps.add(new Person("王五", 24));    ps.add(new Person("王五", 24));    ps.add(new Person("王五", 24));    System.out.println("含有重复元素的集合:");    show(ps);    System.out.println("---------------");    System.out.println("去除重复元素的集合:");    ps = singList(ps);    show(ps);  } }结果:含有重复元素的集合:张三---23李四---22李四---22李四---22王五---24王五---24王五---24王五---24---------------去除重复元素的集合:张三---23李四---22王五---24

 

只要执行一次contains,然后就执行equals方法


 --------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------


原创粉丝点击