Java集合学习小结(1)--转载
容器的概率强调了容器用来装对象,并且容量大小可变
JDK提供的容器API位于Java.util包内(里面有许多的工具)
容器的结构如下:
第一种:Collection。它是一个一个地装东西。他有两种:
(1)Set它只有一种即HashSet类,它像一个集合——没有顺序且不重复
(2)List它有两种LinkedList类和ArrayList类。它们装的东西有顺序,且可以重复。若两个对象相互equals则重复
第二种:Map。它只有一种既Hash Map类。Map接口定义了存储“键——值映射对”的方法。它是一对一对地装东西。
注意Collection,Set, List ,Map都是接口;HashSet,LinkedList,ArrayList,Hash Map是实现了Set, List ,Map接口的类
方法boolean contains(Object o) 如果此 collection 包含指定的元素,则返回 true。即测试在此 collection 中是否存在某元素。
方法boolean containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。
方法boolean retainAll(Collection<?> c) 仅保留此 collection 中那些也包含在指定 collection 的元素。即求交集
import java.util.*;
public class BasicContainer {
public static void main(String[] args) {
Collection c = new HashSet();//体现了父类引用指向子类对象。这样的话,c具有Collection c的特性,而不具有HashSet的特性,所以以后换成ArrayList等时下面的代码依然不用更改,体现了灵活性。
c.add("hello");
c.add(new Name("f1","l1"));
c.add(new Integer(100));//往c里面添加东西时候,只可以是对象不可以是基础类型
c.remove("hello"); //去除hello。Collection重写了equals方法
c.remove(new Integer(100));//去除100
System.out.println(c.remove(new Name("f1","l1")));方法boolean remove(Object o)有一个返回值来判断去除是否成功。这里输出时false,因为没有重写equals方法,这两个"f1","l1"是不同的对象。方法public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时(也就是说当在stack中的x,y引用指向heap中的同一个对象时),此方法才返回 true(x == y 具有值 true)(这个是很难实现的,所以常重写equals方法)
System.out.println(c);
}
}
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; }
}
JDK提供的容器API位于Java.util包内(里面有许多的工具)
容器的结构如下:
第一种:Collection。它是一个一个地装东西。他有两种:
(1)Set它只有一种即HashSet类,它像一个集合——没有顺序且不重复
(2)List它有两种LinkedList类和ArrayList类。它们装的东西有顺序,且可以重复。若两个对象相互equals则重复
第二种:Map。它只有一种既Hash Map类。Map接口定义了存储“键——值映射对”的方法。它是一对一对地装东西。
注意Collection,Set, List ,Map都是接口;HashSet,LinkedList,ArrayList,Hash Map是实现了Set, List ,Map接口的类
方法boolean contains(Object o) 如果此 collection 包含指定的元素,则返回 true。即测试在此 collection 中是否存在某元素。
方法boolean containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。
方法boolean retainAll(Collection<?> c) 仅保留此 collection 中那些也包含在指定 collection 的元素。即求交集
import java.util.*;
public class BasicContainer {
public static void main(String[] args) {
Collection c = new HashSet();//体现了父类引用指向子类对象。这样的话,c具有Collection c的特性,而不具有HashSet的特性,所以以后换成ArrayList等时下面的代码依然不用更改,体现了灵活性。
c.add("hello");
c.add(new Name("f1","l1"));
c.add(new Integer(100));//往c里面添加东西时候,只可以是对象不可以是基础类型
c.remove("hello"); //去除hello。Collection重写了equals方法
c.remove(new Integer(100));//去除100
System.out.println(c.remove(new Name("f1","l1")));方法boolean remove(Object o)有一个返回值来判断去除是否成功。这里输出时false,因为没有重写equals方法,这两个"f1","l1"是不同的对象。方法public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时(也就是说当在stack中的x,y引用指向heap中的同一个对象时),此方法才返回 true(x == y 具有值 true)(这个是很难实现的,所以常重写equals方法)
System.out.println(c);
}
}
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; }
}