1、容器的概念
Java API所提供的一系列实例,用于在程序中存放对象;
java提供的容器位于java.util包;
Set,里面的对象没有顺序,不可重复;
List,里面的对象有顺序,可以重复;
Map,定义了存储"键(key)-值(value)映射对"的方法;
2、Collection接口定义的方法;
int size();
boolean isEmpty();
void clear();
boolean contains(Object element);
boolean add(Object element);
boolean remove(Object element);
boolean containsAll(Collection c);
boolean addAll(Collection c);
boolean removeAll(Collection c);
boolean retainAll(Collection c);
Object [] toArray();
容器对象在调用remove,contains等方法时需要比较对象是否相等,这就会涉及到对象类型的equals和hashCode方法,对于自定义的类型,需要重写类的equals方法,也需要重写hashCode方法;
3、Iterator接口
所有实现了Collection 接口的容器类都有一个iterator方法,用以返回一个实现了Iterator接口的对象;
Iterator对象称为迭代器,用以方便的实现对容器内元素的遍历操作;
Iterator定义了如下方法:
boolean hasNext();判断游标右边是否有元素
Object next();返回游标右边的元素并将游标移动到下一位置
void remove();删除游标左面的元素,在执行完next后该操作只能执行一次;
4、加强的For循环语句(JDK1.5以后)
int [] arr = {1,2,3,4,5};
for (int i:arr)
{ System.out.println(i);}
Collection c = new ArrayList();
c.add(new String("aaaa"));
c.add(new String("bbbb"));
c.add(new String("cccc"));
for (Object o:c)
{System.out.println(o);}
缺点:数组(不能方便的访问下标值;)集合(与使用Iterator相比,不能方便的删除集合中的内容;其实在内部也是调用Iterator)
除了简单遍历并读出内容外,不建议使用增强for;
5、Set接口是Collection的子接口(无顺序,不重复)
Set s = new HashSet();
实例2:
6、List接口是Collection的子接口(有顺序,可重复)
List容器类有ArrayList和LinkedList等
List常用算法;
void sort(List);对List容器内的元素排序
void shuffle(List);对List容器内的元素进行随机排序;
void reverse(List);对List容器内的元素进行逆序派讯;
void fill(list,Object);用一个特定的对象重写整个容器;
void copy(List dest,List src);将src容器内容拷贝到dest容器;
int binarySearch(List,Object);对于顺序的List容器,采用二分法查找特定对象;
比较对象的大小
所有可排序的类都实现了java.lang.Comparable接口,该接口只有一个方法:
public int compareTo(Object obj);
返回0 表示this==obj;
返回正数表示this>obj;
返回负数表示this<obj;
java.lang.Comparable
7、Map接口
Map接口用来存储键-值对;
Map接口的实现类有HashMap和TreeMap;
Map类中存储的键-值对通过键来标识,所以键值不能重复;
8、泛型(Generic)(JDK1.5之后)
List <String > c = new ArrayList <String>();
c.add("aaa");
c.add("bbb");
c.add("ccc");
for (inti i = 0;i<c.size();i++)
{
String s = c.get(i);
System.out.println(s);
}
9、自动打包和解包(Auto-boxing,unboxing)