集合クラスの一般的な使い方

4591 ワード

スタック、キューなどの一般的な要件は、コレクションクラスで実現できます.

package cn.ibeans.test;

import java.util.LinkedList;
/**
 *        LinkedList      ,          
 * @author llf
 *
 */
public class MyStack {
	LinkedList ll = new LinkedList();
	
	/**
	 *   
	 * @param o
	 */
	public void push(Object o){
		ll.addFirst(o);
	}
	
	/**
	 *   
	 * @return
	 */
	public Object pop(){
		return ll.removeFirst();
	}
	
	/**
	 *         
	 * @return
	 */
	public boolean isEmpty(){
		return ll.isEmpty();
	}
	
	public static void main(String[] args) {
		MyStack stack = new MyStack();
		stack.push("one");
		stack.push("two");
		stack.push("three");
		
		while(!stack.isEmpty()){
			System.out.println(stack.pop());			
		}
	}
}


キュー:

package cn.ibeans.test;

import java.util.LinkedList;
import java.util.List;
/**
 *                 
 * @author llf
 *
 */
public class MyQueue {
	private LinkedList ll = new LinkedList();
	
	/**
	 *   
	 * @param o
	 */
	public void put(Object o){
		ll.addLast(o);
	}
	
	/**
	 *   
	 * @return
	 */
	public Object get(){
		return ll.removeFirst();
	}
	
	public boolean isEmpty(){
		return ll.isEmpty();
	}
	
	public static void main(String[] args) {
		MyQueue queue = new MyQueue();
		queue.put("one");
		queue.put("two");
		queue.put("three");
		
		while(!queue.isEmpty()){
			System.out.println(queue.get());
		}
	}
}

hashset:

package cn.ibeans.test;

import java.util.HashSet;
import java.util.Iterator;

/**
 *        hashset      set  
 *   ,            hashCode() equals()  
 * @author llf
 *
 */
public class MyHashSet {
	
	public static void main(String[] args) {
		HashSet hs = new HashSet();
		hs.add(new Student("zhangsan",1));
		hs.add(new Student("lishi",2));
		hs.add(new Student("zhangsan",1));
		hs.add(new Student("wangwu",3));
		
		
		Iterator it = hs.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
	}
	
}


class Student{
	int age;
	String name;
	Student(String name,int age){
		this.age=age;
		this.name = name;
	}
	
	public int hashCode(){
		return age*name.hashCode();
	}
	
	public boolean equals(Object o){
		Student s = (Student)o;
		return s.age==age && s.name.equals(name);
	}
	
	public String toString(){
		return "name : "+age;
	}
}

treeset:

package cn.ibeans.test;

import java.util.Iterator;
import java.util.TreeSet;

/**
 *   treeset           
 *          comparable  ,           treeset  
 * @author llf
 *
 */
public class MyTreeSet {
	public static void main(String[] args) {
		TreeSet hs = new TreeSet();
		hs.add(new Man("zhangsan",1));
		hs.add(new Man("lishi",2));
		hs.add(new Man("zhangsan",1));
		hs.add(new Man("wangwu",3));
		hs.add(new Man("wangwu",0));
		
		
		Iterator it = hs.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
	}
}

class Man implements Comparable{
	int age;
	String name;
	Man(String name,int age){
		this.age=age;
		this.name = name;
	}
	
	public int compareTo(Object o){
		Man s = (Man)o;
		int result = age>s.age ? 1:(age==s.age?0:-1);
		if(result==0){
			result = name.compareTo(s.name);
		}
		return result;
	}
	
	public int hashCode(){
		return age*name.hashCode();
	}
	
	public boolean equals(Object o){
		Student s = (Student)o;
		return s.age==age && s.name.equals(name);
	}
	
	public String toString(){
		return name +" : "+age;
	}
}