java中的容器Collection

java中的容器

1136

1个图,

1个类(Collections),

三个知识点(增强的for循环,Generic(泛型),Auto-boxing/boxing(自动打包/解包)),

6个接口:

Interface Collection<E>

Interface Set<E>

Interface List<E>

Interface Map<K,V>

Interface Iterator<E>

Interface Comparable<T>

一个图:


 

TestCollect.java

import java.util.*;
//java中的容器
//一个图,8个接口
public class TestCollection {
	public static void main(String[] args) {
		
		//父类的引用指向子类的对象,多态
		Collection c = new ArrayList();		
		//add()添加对象
		c.add("hello");
		c.add(new Name("f1","l1"));
		c.add(new Integer(100));
		
		System.out.println(c.size());//3
		System.out.println(c);//[hello, f1 l1, 100]
				
	}
}

class Name{
	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;
	}
	
}
F:\java>javac TestCollection.java
注: TestCollection.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

F:\java>java TestCollection
3
[hello, f1 l1, 100]

F:\java>

 可以看到上面的信息,出现了一些警告,不用管他。

输出结果为:

3

[hello, f1 l1, 100]

 BasicContainer.java

import java.util.*;

public class BasicContainer {
    public static void main(String[] args) {
        Collection c = new HashSet();
        c.add("hello");
        c.add(new Name("f1","l1"));
        c.add(new Integer(100));
        c.remove("hello"); 
        c.remove(new Integer(100));
		//remove移除容器中的元素
        System.out.println(c.remove(new Name("f1","l1")));
        System.out.println(c);
    }


}

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;  }
    
	/*
    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);
		}
		public int hashCode() {
		    return firstName.hashCode();
		}
		
		
		
		public int compareTo(Object o) {
        Name n = (Name)o;
        int lastCmp = 
            lastName.compareTo(n.lastName);
        return 
             (lastCmp!=0 ? lastCmp :
              firstName.compareTo(n.firstName));
    }
	*/
		
}
F:\java>javac BasicContainer.java
注: BasicContainer.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

F:\java>java BasicContainer
false
[f1 l1]

F:\java>

删除不彻底,重写Name类的equlas()和hashCode()方法 

BasicContainer.java

import java.util.*;

public class BasicContainer {
    public static void main(String[] args) {
        Collection c = new HashSet();
        c.add("hello");
        c.add(new Name("f1","l1"));
        c.add(new Integer(100));
        c.remove("hello"); 
        c.remove(new Integer(100));
		//remove移除容器中的元素
        System.out.println(c.remove(new Name("f1","l1")));
        System.out.println(c);
    }


}

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();
	}
			
	/*
	public int compareTo(Object o) {
        Name n = (Name)o;
        int lastCmp = 
            lastName.compareTo(n.lastName);
        return 
             (lastCmp!=0 ? lastCmp :
              firstName.compareTo(n.firstName));
    }
	*/
		
}
F:\java>javac BasicContainer.java
注: BasicContainer.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

F:\java>java BasicContainer
true
[]

F:\java>

猜你喜欢

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