`
444878909
  • 浏览: 638818 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

--------------------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());//出队
           }
      }
 
}
 
结果:
zhangsan
lisi
wangwu


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());// 出栈
    }
  }
}
结果:
wangwu
lisi
zhangsan


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培训、期待与您交流! --------------------


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics