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>