集合:集合是存储对象数据的集合容器。
集合比数组的优势:
1.集合可以存储任意类型的对象数据,数组只能存储同一种数据类型 的数据。
2.集合的长度是会发生变化的,数组的长度是固定的。
Collection: 单例集合的 根接口。
List: 如果实现了List接口的集合类,具备的特点是:有序,可重复
Set:如果实现了Set接口的集合类,具备的特点是:无序,不可重复。
Collection 接口 中的方法:
boolean add(E,e); 成功返回true
boolean addAll(Collection<? extends E> c)
void clear()
清空集合中的元素
boolean remove(Object o)
从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
boolean removeAll(Collection<?> c)
移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
boolean retainAll(Collection<?> c)
仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
int size()
返回此 collection 中的元素数。
比较重要的
boolean isEmpty()
判断是否为空
boolean contains(Object o)
如果此 collection 包含指定的元素,则返回 true。
boolean containsAll(Collection<?> c)
如果此 collection 包含指定 collection 中的所有元素,则返回 true。
Object[] toArray()
返回包含此 collection 中所有元素的数组。
Object[] arr = c.toArray();
//需求: 把编号是110的人信息 输出。
for(int i = 0 ; i<arr.length ; i++){
Person p = (Person) arr[i]; //从Object数组中取出的元素只能使用Object类型声明变量接收,如果需要其他 的类型需要进行强制类型转换。
if(p.id==110){
System.out.println(p);
}
}
java.util 中接口Collection
注意点:重新toString函数
例如:在对象中重写
@Override
public String toString() {
return "{编号:"+this.id+" 姓名:"+ this.name+"}";
}
@Override
public boolean equals(Object obj) {
Person p = (Person)obj;
return this.id == p.id ;
}
//java规范: 一般重写equlas方法我们都会重写hashCode方法的。
@Override
public int hashCode() {
return this.id;
}