java容器之Iterator(迭代器)

java容器之Iterator(迭代器)

Method Summary

boolean hasNext()
Returns  true if the iteration has more elements.
判断游标右边是否有元素
E next()
Returns the next element in the iteration.
返回游标右边的元素,并将游标移动到下一位置
default void remove()
Removes from the underlying collection the last element returned by this iterator (optional operation).
删除游标左边的元素

 

TestIterator.java

import java.util.*;

//Iterator迭代器测试
public class TestIterator {
    public static void main(String[] args) {
        Collection c = new HashSet();
        c.add(new Name("f1","l1"));
		c.add(new Name("f2","l2"));
		c.add(new Name("f3","l3"));
		Iterator i = c.iterator();
		
		//判断游标右边是否有元素
		while(i.hasNext()){
			//next()的返回值要强制转换为对应的对象类型
			Name n = (Name)i.next();
			System.out.println(n.getFirstName() + " ");
		}
		System.out.println();
		
		///////////////////////////////////
		
		Collection c2 = new HashSet();
        c2.add(new Name("f1111","l1111"));
		c2.add(new Name("f2","l2"));
		c2.add(new Name("f3333","l3333"));
		
		for(Iterator it = c2.iterator(); it.hasNext();){
			Name name = (Name)it.next();
			if(name.getFirstName().length() < 3){
				it.remove();
				//如果换成c.remove(name)会产生例外
			}
		}
		System.out.println(c2);//[f1111 l1111, f3333 l3333]
		
    }


}

class Name /*implements Comparable*/ {
    private String firstName,lastName;
    public Name(String firstName, String lastName) {
        this.firstName = firstName; this.lastName = lastName;
    }
    public String getFirstName() {  return firstName;   }
    public String getLastName() {   return lastName;   }
    public String toString() {  return firstName + " " + lastName;  }
    
	/**
	*	重写equals方法
	*/
    public boolean equals(Object obj) {
	    if (obj instanceof Name) {
	        Name name = (Name) obj;
	        return (firstName.equals(name.firstName))
	            && (lastName.equals(name.lastName));
	    }
	    return super.equals(obj);
	}
	/**
	*	重写hashCode方法
	*/
	public int hashCode() {
		    return firstName.hashCode();
	}
		
}

 

F:\java>javac TestIterator.java
注: TestIterator.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

F:\java>java TestIterator
f1
f2
f3

[f1111 l1111, f3333 l3333]

F:\java>

 

猜你喜欢

转载自mfcfine.iteye.com/blog/2384603