Vector类的使用

**

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));
      }
  }


}

摘自其他,但是找不到链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值