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>