**
Vector类的使用:
**
Vector 的主要作用就是可变长度的数组,就把他当成数组使用即可
创建对象中使用的构造方法:
//第一种构造方法创建一个默认的向量,默认大小为 10:
Vector()
//第二种构造方法创建指定大小的向量。
Vector(int size)
//第三种构造方法创建指定大小的向量,并且增量用 incr 指定。增量表示向量每次增加的元素数目。
Vector(int size,int incr)
//第四种构造方法创建一个包含集合 c 元素的向量:
Vector(Collection c)
方法和说明
1、add(E e)
将指定的元素附加到此 Vector 的末尾。
add(int index, E element)
在此 Vector 的指定位置插入指定元素。
3、addAll(int index, Collection<? extends E> c)
将指定 Collection 中的所有元素插入到此 指定位置的向量。
4、addElement(E obj) (常用添加元素的方法)
将指定的组件添加到此向量的末尾, 将其大小增加一。
5、capacity()
返回此向量的当前容量。
6、contains(Object o)
返回 true 如果此向量包含指定的元素。
containsAll(Collection<?> c)
如果此 Vector 包含所有元素,则返回 true 指定的集合。
*copyInto(Object[] anArray) *
将此向量的分量复制到指定的数组中。
7、elementAt(int index)
返回指定索引处的组件。
elements()n
返回此向量的组件的枚举。
ensureCapacity(int minCapacity)
如有必要,增加此向量的容量,以确保它至少可以容纳由指定的组件数量最小容量参数。
Vector v = new Vector();
for(int i = 0 ; i <10 ; i++)
v.add(i);
Enumeration vEnum = v.elements();
while(vEnum.hasMoreElements())
System.out.print(vEnum.nextElement()+ " ");
8、equals(Object o) (与String类型的使用是一样的)
比较指定的 Object 与此 Vector 是否相等。
9、返回索引
firstElement()
返回第一个组件(索引处的项目 0) 的这个向量。
get(int index)
返回此 Vector 中指定位置的元素。
hashCode()
返回此 Vector 的哈希码值。
indexOf(Object o)
返回指定元素第一次出现的索引 在此向量中,如果此向量不包含该元素,则为 -1。
indexOf(Object o,int index)t
返回指定元素第一次出现的索引这个向量,从 index, 或返回 -1 如果 未找到该元素。
10、插入insertElementAt(E obj, int index)
将指定对象作为组件插入此向量中的 指定的 index.
isEmpty()
测试此向量是否没有组件。
lastIndexOf(Object o)
返回指定元素最后一次出现的索引在此向量中,如果此向量不包含该元素,则为 -1。
lastIndexOf(Object o, int index)
返回指定元素最后一次出现的索引这个向量,从 index, 或返回 -1 如果 未找到该元素。
ListIterator()
返回此列表中元素的列表迭代器(在适当的顺序)。
listIterator(int index)
返回此列表中元素的列表迭代器(在适当的序列),从列表中的指定位置开始。
remove(int index)
移除此 Vector 中指定位置的元素。
11、返回索引
boolean
removeElement(Object obj)删除参数的第一个(最低索引)出现从这个向量。
void
removeElementAt(int index)删除指定索引处的组件。
protected void
removeRange(int fromIndex, int toIndex)从此列表中删除索引介于两者之间的所有元素 fromIndex,包括在内,和 toIndex 独家的。
boolean
retainAll(Collection<?> c)仅保留此 Vector 中包含在指定的集合。
12、替换元素
set(int index, E element)
将此 Vector 中指定位置的元素替换为指定的元素。
void
setElementAt(E obj,int index)将组件设置在指定的位置 index 这个的向量是指定的对象。
setSize(int newSize)
13、返回数组(可定义)
toArray()
返回一个包含此 Vector 中所有元素的数组以正确的顺序。
** toArray(T[] a**
)返回一个包含此 Vector 中所有元素的数组正确的顺序; 返回数组的运行时类型指定数组。
String
toString()返回此 Vector 的字符串表示形式,包含 每个元素的字符串表示。
题目:
快递员需要对快递进行分拣,现在小李是一名快递员,他想要你帮他设计一个程序用于快递的分拣,按城市分开。
现在有以下输入:
单号 省份
请你将单号按照城市分开,并输出。
城市按照输入顺序排序
单号按照输入顺序排序
输入
10
10124214 北京
12421565 上海
sdafasdg213 天津
fasdfga124 北京
145252 上海
235wtdfsg 济南
3242356fgdfsg 成都
23423 武汉
23423565f 沈阳
1245dfwfs 成都
**输出**
北京 2
10124214
fasdfga124
上海 2
12421565
145252
天津 1
sdafasdg213
济南 1
235wtdfsg
成都 2
3242356fgdfsg
1245dfwfs
武汉 1
23423
沈阳 1
23423565f
思路:
下面我们来分析一下解题思路。
首先我们要知道中国城市肯定在 1000 个以内,但是单号我们不确定,我们不可能每个数组开 10000 个,那样内存不够,所以这时候我们就用到了我们的 vector,他的容量是动态申请的,在比赛中我们可以理解为无限制。
第一步:我们创建一个 vector 用于保存地址
vector city;
[copy]
第二步:我们创建一个 vector 组用于存放单号
vector dig[1000];
[copy]
第三步:我们定义一个映射函数,因为你的城市可能会再次出现,你需要知道之前有没有。
第四步:我们开始读入操作并按照顺序进行存放
import java.util.List;
import java.util.Scanner;
import java.util.Vector;
public class Main {
static Vector city=new Vector<String>();
static Vector <Vector<String>> dig= new Vector <Vector<String>>();
static int Myfind(String s)
{
for(int i=0;i<city.size();i++)
{
if(city.get(i).equals(s)) {
return i;
}
}
return -1;
}
public static void main(String[] args) {
int n;
Scanner in=new Scanner(System.in);
n=in.nextInt();
for(int i=0;i<n;i++)
{
String d,c;
d=in.next();
c=in.next();
int flag=Myfind(c);
if(flag==-1){
city.addElement(c);
dig.addElement(new Vector<String>());
dig.get(city.size()-1).addElement(d);
}
else dig.get(flag).addElement(d);
}
for(int i=0;i<city.size();i++)
{
System.out.println(city.get(i)+" "+dig.get(i).size());
for(int j = 0; j< dig.get(i).size(); j++)
System.out.println(dig.get(i).get(j));
}
}
}
摘自其他,但是找不到链接