링크 로 이 루어 진 용기

자바 에서 링크 로 용 기 를 만 들 고 대상 을 용기 에 추가 하고 이 용 기 를 옮 겨 다 닙 니 다.
먼저,하나의 노드 를 링크 의 한 노드 로 정의 합 니 다.우 리 는 모든 노드 에 두 가지 내용 이 있다 는 것 을 알 고 있 습 니 다.
1.이 노드 에 저 장 된 내용 
2.다음 결점 을 가리 키 는 지침
package com.dp.iterator;

public class Node {
	private Object data;
	private Node next;

	public Node(Object data, Node next) {
		super();
		this.data = data;
		this.next = next;
	}
	public Object getData() {
		return data;
	}
	public void setData(Object data) {
		this.data = data;
	}
	public Node getNext() {
		return next;
	}
	public void setNext(Node next) {
		this.next = next;
	}

}

링크 목록 링크 클래스 를 정의 합 니 다.이 종 류 는 Collection 인 터 페 이 스 를 실현 했다.
package com.dp.iterator;

//       
public class LinkedList implements Collection{
	Node head = null;
	Node tail = null;
	int size = 0;
	
	public void add(Object o){
		Node n = new Node(o,null);
		if(head == null){
			head = n;
			tail = n;
		}
		tail.setNext(n);
		tail = n;
		size ++;
		
	}
	
	public int size(){
		return size;
	}

	@Override
	public Iterator iterator() {
		// TODO Auto-generated method stub
		return new LinkedListIterator();
	}
	
	public class LinkedListIterator implements Iterator{
		private Node currentNode = null;
		
		@Override
		public boolean hasNext() {
			// TODO Auto-generated method stub
			if(currentNode == tail){
				return false;
			} else {
				return true;
			}
		}

		@Override
		public Object next() {
			// TODO Auto-generated method stub
			if(currentNode == null){
				currentNode = head;
			} else {
				//System.out.println("help");
				currentNode = currentNode.getNext();				
			}

			return currentNode.getData();
		}
		
	}
}

Collection 인터페이스:
package com.dp.iterator;

public interface Collection {
	void add(Object o);
	int size();
	Iterator iterator();
}

Collection 인터페이스 에 서 는 Iterator 인 터 페 이 스 를 인용 하 였 으 며,이 Iterator 인 터 페 이 스 는 LinkedList 류 에서 내부 류 를 통 해 이 루어 집 니 다.
package com.dp.iterator;

public interface Iterator {
	boolean hasNext();
	Object next();
}

보조 클래스 Cat.java
package com.dp.iterator;

public class Cat {
	public Cat(int id) {
	
		this.id = id;
	}

	private int id;
	
	public String toString(){
		return "Cat " + id;
	}
}

테스트 클래스 Test.java
package com.dp.iterator;
import com.dp.iterator.LinkedList;
import com.dp.iterator.ArrayList;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//ArrayList arrayList = new ArrayList();
		//LinkedList arrayList = new LinkedList();
		Collection c = new LinkedList();
		
		for(int i = 0; i < 15; i ++){
			c.add(new Cat(i));
		}
		System.out.println("size" + c.size());
		
		Iterator it = c.iterator();
		while(it.hasNext()){
			Object o = it.next();
			System.out.println(" " + o);
		}
	}

}

이 글 은 주로 JDK 용기 및 교체 자 를 모 의 하 는 방법 을 제공 했다.이 를 통 해 JDK 의 용기 와 용기 가 옮 겨 다 니 는 것 에 대해 더 깊이 이해 할 수 있다.

좋은 웹페이지 즐겨찾기