数据多了,就需要封装,对象多了,也需要存储,可以用数组或集合对对象进行存储,但数组长度不能改变,在实际应用中有缺点,因此使用集合。
Java集合类主要有两个接口派生而出。
从Java SE 5.0开始,集合类是带有类型参数的的泛型类
- Array读快改慢 数组实现的,
- Linked读慢改快
- Hash位于两者之间
Set集合没有顺序,且不可以重复,(重复是编译不会错,但检查集合大小时少与重复的。判断集合中有没有对象,有就放不进去)
List集合有顺序,且可以重复。实现类有LinkedList(链接列表实现)、ArrayList(大小可变数组实现)等
Map 接口定义了key - ---value的映射方法 查找比集合好 键一般不重复,有一个keySet方法,将Map中所有的Key,用集合返回。
使用方式:
每一项都是成对出现的key决定了对象在Map中的位置
Collection 和Iterator接口
Collection定义的方法:
boolean remove(Object o);删除集合中指定元素o,并返回一个boolean类型的值。
Object[] toArray();该方法把集合转换成一个数组。
遍历集合方法:(3种)
第一种通过索引遍历
第二种通过foreach遍历
ArrayList<Student> arr=new ArrayList<Student>();
arr.add(s1);
arr.add(s2);
arr.add(s3);
...
for(Student m:arr){}
这种遍历并不知道在循环体当中,访问到第几个元素。
第三种通过Iterator对象遍历。
public interface Iterator<E>
{
E next();
boolean hasNext();
void remove();
}
反复调用next()方法,可以逐个访问集合中的所有元素,但如果到达结尾,会抛出一个NoSuchElementException异常,因此在调用next()方法之前先调用hsaNext()方法进行判、判断
例如:
Collection<String> c=...;
Iterator<String> iter=c.iterator();
while(iter.hasNext())
{
String element=iter.next();
//do something with element;
}