1. 集合类Vecotr和Enumeration的使用
Vector就是动态数组,使用时要导包java.util.Vector
用法:
addElement(Object o);//添加元素,元素可以是任意对象,
elements();//取出元素,但取出的是Enumeration接口实现的对象。
Enumeration接口定义了一套方法去操作集合对象
如:nextElement();//返回指示器指向的元素对象,指示器自动加一。
hasMoreElements();//指示器有元素时返回false,没有元素时返回true。
使用举例
Vector v = new Vector();//存对象,假设是Integer
v.addElement(...);
Enumeration e = v.elements();//取对象
while(e.hasMoreElements())
{
sum += ((Integer)e.nextElement()).intValue();//取出的对象是Object要强制转换
}
2. Collection接口与Iterator接口
ArrayList Set List都继承自Collection,区别是:
ArrayList是实现List的类,List里的元素有顺序,可以进行排序。
Collection中元素没有顺序即无法找到第几个元素,允许有重复的元素和null对象
Set中元素没有顺序,不允许有重复元素,最多一个null对象。
ArrayList类似Vector,常用函数有:
add(Object o);//添加一个元素对象
iterator();//取元素,返回一个Iterator对象。
Iterator接口类似Enumeration,常用函数有:
hasNext();//指示器是否指向元素
next();//返回指示器所指向的对象
ArrayList、Iterator和Vector、Enumeration的用法类似。
习题:输入一排数,用ArrayList输出和。
import java.util.ArrayList;
import java.util.Iterator;
//ArrayList是Collection的子类,类似Vector
public class TestCollectionIterator {
public static void main(String [] args)
{
ArrayList v = new ArrayList();//存对象
int ch = 0; ;//函数中定义的变量要初始化
int sum = 0;
while(true)
{
try{
ch = System.in.read();//这里ch是个整数,但读取的是个字符,存的是ascii码
}catch(Exception e)
{
e.getStackTrace();
}
if(ch=='\r'|| ch=='\n')
{
break;
}
else
{
ch = ch - '0';
v.add(Integer.valueOf(ch));//转换成Integer对象在存进容器里
}
}
Iterator i = v.iterator();
while(i.hasNext())
{
sum += ((Integer)i.next()).intValue();
}
System.out.println("the sum is "+sum);
}
}
Vector和ArrayList的区别是Vector中的方法都是县城同步的,所以单线程访问的话效率较低;ArrayList不是线程同步的,单线程访问效率较高,多线程要自己同步处理。
Collections类提供操作集合对象的方法,如
ArrayList a = new ArrayList();
......
Collections.sort(a);//排序