千里之行,始于足下。
——春秋老子《道德经》
Java Vector 的 Api。
修饰符和类型 | 方法和说明 |
---|---|
boolean | add(E e)将指定的元素附加到此 Vector 的末尾。 |
void | add(int index, E element)在此 Vector 的指定位置插入指定元素。 |
boolean | addAll(Collection<? extends E> c)将指定集合中的所有元素追加到末尾 这个向量,按照它们由指定的返回的顺序 集合的迭代器。 |
boolean | addAll(int index, Collection<? extends E> c)将指定 Collection 中的所有元素插入到此 指定位置的向量。 |
void | addElement(E obj)将指定的组件添加到此向量的末尾, 将其大小增加一。 |
int | capacity()返回此向量的当前容量。 |
void | clear()从此 Vector 中删除所有元素。 |
Object | clone()返回此向量的克隆。 |
boolean | contains(Object o)退货 true 如果此向量包含指定的元素。 |
boolean | containsAll(Collection<?> c)如果此 Vector 包含所有元素,则返回 true 指定的集合。 |
void | copyInto(Object[] anArray)将此向量的分量复制到指定的数组中。 |
E | elementAt(int index)返回指定索引处的组件。 |
Enumeration | elements()返回此向量的组件的枚举。 |
void | ensureCapacity(int minCapacity)如有必要,增加此向量的容量,以确保它至少可以容纳由指定的组件数量最小容量参数。 |
boolean | equals(Object o)比较指定的 Object 与此 Vector 是否相等。 |
E | firstElement()返回第一个组件(索引处的项目 0) 的这个向量。 |
E | get(int index)返回此 Vector 中指定位置的元素。 |
int | hashCode()返回此 Vector 的哈希码值。 |
int | indexOf(Object o)返回指定元素第一次出现的索引 在此向量中,如果此向量不包含该元素,则为 -1。 |
int | indexOf(Object o,int index)返回指定元素第一次出现的索引这个向量,从 index, 或返回 -1 如果 未找到该元素。 |
void | insertElementAt(E obj, int index)将指定对象作为组件插入此向量中的 指定的 index. |
boolean | isEmpty()测试此向量是否没有组件。 |
Iterator | iterator()以适当的顺序返回此列表中元素的迭代器 |
E | lastElement()返回向量的最后一个组件。 |
int | lastIndexOf(Object o)返回指定元素最后一次出现的索引在此向量中,如果此向量不包含该元素,则为 -1。 |
int | lastIndexOf(Object o, int index)返回指定元素最后一次出现的索引这个向量,从 index, 或返回 -1 如果 未找到该元素。 |
ListIterator | listIterator()返回此列表中元素的列表迭代器(在适当的顺序)。 |
ListIterator | listIterator(int index)返回此列表中元素的列表迭代器(在适当的序列),从列表中的指定位置开始。 |
E | remove(int index)移除此 Vector 中指定位置的元素。 |
boolean | remove(Object o)移除此 Vector 中第一次出现的指定元素如果 Vector 不包含该元素,则它保持不变。 |
boolean | removeAll(Collection<?> c)从此 Vector 中删除其包含在指定的集合。 |
void | removeAllElements()从此向量中删除所有组件并将其大小设置为零。 |
boolean | removeElement(Object obj)删除参数的第一个(最低索引)出现从这个向量。 |
void | removeElementAt(int index)删除指定索引处的组件。 |
protected void | removeRange(int fromIndex, int toIndex)从此列表中删除索引介于两者之间的所有元素 fromIndex,包括在内,和 toIndex, 独家的。 |
boolean | retainAll(Collection<?> c)仅保留此 Vector 中包含在指定的集合。 |
E | set(int index, E element)将此 Vector 中指定位置的元素替换为指定的元素。 |
void | setElementAt(E obj,int index)将组件设置在指定的位置 index 这个的向量是指定的对象。 |
void | setSize(int newSize)设置此向量的大小。 |
int | size()返回此向量中的组件数。 |
List | subList(int fromIndex,int toIndex)返回此列表中 fromIndex 之间的部分的视图 |
Object[] | toArray()返回一个包含此 Vector 中所有元素的数组以正确的顺序。 |
T[] | toArray(T[] a)返回一个包含此 Vector 中所有元素的数组正确的顺序; 返回数组的运行时类型指定数组。 |
String | toString()返回此 Vector 的字符串表示形式,包含 每个元素的字符串表示。 |
void | trimToSize()将此向量的容量修剪为向量的电流 尺寸。 |
题目01 快递分拣
题目描述:
快递员需要对快递进行分拣,现在小李是一名快递员,他想要你帮他设计一个程序用于快递的分拣,按城市分开。
现在有以下输入:
单号 省份 请你将单号按照城市分开,并输出。 城市按照输入顺序排序 单号按照输入顺序排序
样例如下:
输入 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
代码:
public class _01快递分拣 { static Vector<String> city = new Vector<String>(); //存放城市 static Vector<Vector<String>> dig = new Vector<Vector<String>>(); // 存放订单 public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); // in.nextLine(); for (int i=0; i<n; ++i) { String d = in.next(); String 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)); } } } static int myFind(String s) { for (int i=0; i<city.size(); ++i) { if (city.get(i).equals(s)) { return i; } } return -1; } }
队列Queue
定义方式:
Queue<String> queue = new LinkedList<String>();
部分成员函数(包括继承的):
-
add(): 增加一个元索,如果队列已满,则抛出一个异常
-
remove():移除并返回队列头部的元素,如果队列为空,则抛出一个异常
-
element():返回队列头部的元素,如果队列为空,则抛出一个异常
-
offer():添加一个元素并返回 true,如果队列已满,则返回 false
-
poll(): 移除并返问队列头部的元素,如果队列为空,则返回 null
-
peek(): 返回队列头部的元素,如果队列为空,则返回 null
-
put(): 添加一个元素, 如果队列满,则阻塞
-
take(): 移除并返回队列头部的元素,如果队列为空,则阻塞
-
size(): 返回队列长度。
题目01 CLZ的银行
第一行 M 次操作(M<1000) 第二行 到 第M+1行 输入操作 格式: IN name V OUT V IN name2 N OUT N 即 第一个字符串为操作 是IN进入排队和OUT 出队 IN 排队 跟着两个字符串为姓名和权限V或N OUT 为出队即完成操作,V和N代表那个窗口完成了操作 输出:M次操作后V队列和N队列中姓名,先输出V队列后输出N队列。 样例: 输入: 5 IN xiaoming N IN Adel V IN laozhao N OUT N IN CLZ V 输出: Adel CLZ laozhao
代码:
public class _02CLZ的银行 { static Queue<String> V = new LinkedList<String>(); static Queue<String> N = new LinkedList<String>(); public static void main(String[] args) { Scanner in = new Scanner(System.in); int M = in.nextInt(); while (M > 0) { M--; String op, name, type; op = in.next(); if (op.contains("IN")) { name = in.next(); type = in.next(); if (type.contains("V")) { V.offer(name); } else { N.offer(name); } } else { type = in.next(); if (type.contains("V")) { V.poll(); } else { N.poll(); } } } while (V.size() != 0) { System.out.println(V.poll());; } while (N.size() != 0) { System.out.println(N.poll()); } } }
Map 映射
定义方法:
Map m1 = new TreeMap();
这里我们讲的是排序的 map 还有不排序的 map,java 里面叫 hashmap,C++ 里叫 unordered_map,除了不排序,用法和功能都一样。
二者相差无几,大家如果不需要排序可以直接使用。
成员方法
方法名 | 方法描述 |
---|---|
void clear( ) | 从此映射中移除所有映射关系(可选操作)。 |
boolean containsKey(Object k) | 如果此映射包含指定键的映射关系,则返回 true。 |
boolean containsValue(Object v) | 如果此映射将一个或多个键映射到指定值,则返回 true。 |
boolean equals(Object obj) | 比较指定的对象与此映射是否相等。 |
Object get(Object k) | 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 |
int hashCode( ) | 返回此映射的哈希码值。 |
boolean isEmpty( ) | 如果此映射未包含键-值映射关系,则返回 true。 |
Set keySet( ) | 返回此映射中包含的键的 Set 视图。 |
Object put(Object k, Object v) | 将指定的值与此映射中的指定键关联 |
Object remove(Object k) | 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 |
int size( ) | 返回此映射中的键-值映射关系数。 |
Collection values( ) | 返回此映射中包含的值的 Collection 视图。 |
试题03 弗里石的的语言
输入:
第 1 行,输入N,代表共计创造了多少个单词 第 2 行至第 N+1 行,输入 N 个单词 格式: fjsdfgdfsg fdfsgsdfg bcvxbxfyres
现在有以下样例输入:
样例 1
输入: 6 1fagas dsafa32j lkiuopybncv hfgdjytr cncxfg sdhrest 输出: NO
样例 2
输入: 5 sdfggfds fgsdhsdf dsfhsdhr sdfhdfh sdfggfds 输出: sdfggfds
代码:
public class _03弗里石的的语言 { static Map<String, Boolean> mp = new TreeMap<String, Boolean>(); public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); boolean flag = false; // 单词不在mp中 String ans = "No"; // 不存在重复单词 for (int i=0; i<n; ++i) { String word = in.next(); if (flag) { continue; } if (mp.containsKey(word)) { flag = mp.containsValue(word); ans = word; } else { mp.put(word,true); } } System.out.println(ans); } }