ArrayList和LinkedList的比较
ArrayList底层采用数组完成,而LinkedList则是以一般的双向链表(double-linked list)完成,其内每个对象除了数据本身外,还有两个 引用,分别指向前一个元素和后一个元素。
如果我们经常在List的开始处增加元素,或者在List中进行插入和删除操作,我们应该使用LinkedList,否则的话,使用ArrayList将更加快速。
java 代码
- //LinkedList实现堆栈
- import java.util.*;
- public class MyStack {
- private LinkedList ll = new LinkedList();
- public void push(Object o) {
- ll.addFirst(o);
- }
- public Object pop() {
- return ll.removeFirst();
- }
- public Object peek() {
- return ll.getFirst();
- }
- public boolean empty() {
- return ll.isEmpty();
- }
- public static void main(String[] args) {
- MyStack ms = new MyStack();
- ms.push("one");
- ms.push("two");
- ms.push("three");
- System.out.println(ms.pop());
- System.out.println(ms.peek());
- System.out.println(ms.pop());
- System.out.println(ms.empty());
- }
- }
- /*结果
- three
- two
- two
- false
- */
java 代码
- //LinkedList实现队列
- import java.util.*;
- public class MyQueue {
- private LinkedList ll = new LinkedList();
- public void put(Object o) {
- ll.addLast(o);
- }
- public Object get() {
- return ll.getFirst();
- }
- public boolean empty() {
- return ll.isEmpty();
- }
- public static void main(String[] args) {
- MyQueue mq = new MyQueue();
- mq.put("zhangsan");
- mq.put("lisi");
- mq.put("wangwu");
- System.out.println(mq.empty());
- System.out.println(mq.get());
- }
- }
- /*
- false
- zhangsan
- *
- */
java 代码
- //HashSet用法例子
- import java.util.*;
- public class HashSetTest {
- public static void main(String[] args) {
- HashSet hs = new HashSet();
- // hs.add("one");
- // hs.add("two");
- // hs.add("three");
- // hs.add("one");
- hs.add(new Student(1, "zhangsan"));
- hs.add(new Student(2, "lisi"));
- hs.add(new Student(3, "wangwu"));
- hs.add(new Student(1, "zhangsan"));
- Iterator iter = hs.iterator();
- while (iter.hasNext()) {
- System.out.println(iter.next());
- }
- }
- }
- class Student {
- int num;
- String name;
- Student(int num, String name) {
- this.num = num;
- this.name = name;
- }
- public int hashCode() { // 重写hashCode()方法覆盖
- return num * name.hashCode();
- }
- public boolean equals(Object o) {//重写equals()方法覆盖
- Student s = (Student) o;
- return num == s.num && name.equals(s.name);
- }
- public String toString() {
- return num + ":" + name;
- }
- }
- /*结果
- 1:zhangsan
- 3:wangwu
- 2:lisi
- *
- */
java 代码
- /*
- * TreeSet
- public TreeSet()构造一个新的空 set,该 set 按照元素的自然顺序排序。
- 插入该 set 的所有元素都必须实现 Comparable 接口。而且,
- 所有此类元素必须是可相互比较的:为 set 中的任何元素 e1 和 e2
- 执行 e1.compareTo(e2) 时必须不抛出 ClassCastException。
- 如果用户尝试将违背此约束的元素添加到 set 中(例如,用户试图将字符
- 串元素添加到其元素为整数的 set 中),则 add(Object) 调用将抛出
- ClassCastException。
- */
- import java.util.*;
- public class TreeSetTest {
- public static void main(String[] args) {
- TreeSet ts = new TreeSet(new Student.StudentComparator());
- // ts.add("winsun");
- // ts.add("weixin");
- // ts.add("mybole");
- ts.add(new Student(2,"zhangsan"));
- ts.add(new Student(1,"lisi"));
- ts.add(new Student(3,"wangwu"));
- ts.add(new Student(3,"mybole"));
- Iterator iter = ts.iterator();
- while(iter.hasNext()) {
- System.out.println(iter.next());
- }
- }
- }
- class Student implements Comparable
- {
- int num;
- String name;
- static class StudentComparator implements Comparator
- {
- public int compare(Object o1,Object o2)
- {
- Student s1=(Student)o1;
- Student s2=(Student)o2;
- int result=s1.num > s2.num ? 1 : (s1.num==s2.num ? 0 : -1);
- if(result==0)
- {
- result=s1.name.compareTo(s2.name);
- }
- return result;
- }
- }
- Student(int num,String name)
- {
- this.num=num;
- this.name=name;
- }
- public int compareTo(Object o)
- {
- Student s=(Student)o;
- return num > s.num ? 1 : (num==s.num ? 0 : -1);
- }
- public String toString()
- {
- return num+":"+name;
- }
- }
- /*
- 1:lisi
- 2:zhangsan
- 3:mybole
- 3:wangwu
- */
- */
java 代码
- //HashMap用法
- import java.util.*;
- public class HashMapTest {
- // printElements()通过迭代器打印集合中的元素
- public static void printElements(Collection c)
- {
- Iterator it=c.iterator();
- while(it.hasNext())
- {
- System.out.println(it.next());
- }
- }
- public static void main(String[] args) {
- HashMap hm = new HashMap();
- hm.put("one", "zhangsan");
- hm.put("two", "lisi");
- hm.put("three", "wangwu");
- System.out.println(hm.get("one"));
- System.out.println(hm.get("two"));
- System.out.println(hm.get("three"));
- Set keys=hm.keySet();//返回此映射中所包含的键的 set 视图。
- System.out.println("key:");
- printElements(keys);
- Collection values = hm.values();//返回此映射所包含的值的 collection 视图。
- System.out.println("values:");
- printElements(values);
- Set entry = hm.entrySet();//返回此映射所包含的映射关系的 collection 视图
- System.out.println("entry:");
- printElements(entry);
- }
- }
- /*
- zhangsan
- lisi
- wangwu
- key:
- one
- two
- three
- values:
- zhangsan
- lisi
- wangwu
- one=zhangsan
- two=lisi
- three=wangwu
- */
更多方法参看 java.util.* 里面相应的类。。。。。。。。。。。。。。