内置函数模板

目录

迭代器

题目演练

题目描述

输入描述

输出描述

输入输出样例

代码实现 

队列

定义方式

部分成员函数(包括继承的)

 题目演练

题目描述

输入描述

输出描述

输入输出样例

代码实现

Map映射

定义方法

成员方法

题目演练

题目描述

输入描述

输出描述

输入输出样例

代码实现


迭代器

//第一种构造方法创建一个默认的向量,默认大小为 10:
Vector()
//第二种构造方法创建指定大小的向量。
Vector(int size)
//第三种构造方法创建指定大小的向量,并且增量用 incr 指定。增量表示向量每次增加的元素数目。
Vector(int size,int incr)
//第四种构造方法创建一个包含集合 c 元素的向量:
Vector(Collection c)

以下为 Java Vector 的 Api。

修饰符和类型方法和说明
booleanadd(E e)将指定的元素附加到此 Vector 的末尾。
voidadd(int index, E element)在此 Vector 的指定位置插入指定元素。
booleanaddAll(Collection<? extends E> c)将指定集合中的所有元素追加到末尾 这个向量,按照它们由指定的返回的顺序 集合的迭代器。
booleanaddAll(int index, Collection<? extends E> c)将指定 Collection 中的所有元素插入到此 指定位置的向量。
voidaddElement(E obj)将指定的组件添加到此向量的末尾, 将其大小增加一。
intcapacity()返回此向量的当前容量。
voidclear()从此 Vector 中删除所有元素。
Objectclone()返回此向量的克隆。
booleancontains(Object o)退货 true 如果此向量包含指定的元素。
booleancontainsAll(Collection<?> c)如果此 Vector 包含所有元素,则返回 true 指定的集合。
voidcopyInto(Object[] anArray)将此向量的分量复制到指定的数组中。
EelementAt(int index)返回指定索引处的组件。
Enumerationelements()返回此向量的组件的枚举。
voidensureCapacity(int minCapacity)如有必要,增加此向量的容量,以确保它至少可以容纳由指定的组件数量最小容量参数。
booleanequals(Object o)比较指定的 Object 与此 Vector 是否相等。
EfirstElement()返回第一个组件(索引处的项目 0) 的这个向量。
Eget(int index)返回此 Vector 中指定位置的元素。
inthashCode()返回此 Vector 的哈希码值。
intindexOf(Object o)返回指定元素第一次出现的索引 在此向量中,如果此向量不包含该元素,则为 -1。
intindexOf(Object o,int index)返回指定元素第一次出现的索引这个向量,从 index, 或返回 -1 如果 未找到该元素。
voidinsertElementAt(E obj, int index)将指定对象作为组件插入此向量中的 指定的 index.
booleanisEmpty()测试此向量是否没有组件。
Iteratoriterator()以适当的顺序返回此列表中元素的迭代器
ElastElement()返回向量的最后一个组件。
intlastIndexOf(Object o)返回指定元素最后一次出现的索引在此向量中,如果此向量不包含该元素,则为 -1。
intlastIndexOf(Object o, int index)返回指定元素最后一次出现的索引这个向量,从 index, 或返回 -1 如果 未找到该元素。
ListIteratorlistIterator()返回此列表中元素的列表迭代器(在适当的顺序)。
ListIteratorlistIterator(int index)返回此列表中元素的列表迭代器(在适当的序列),从列表中的指定位置开始。
Eremove(int index)移除此 Vector 中指定位置的元素。
booleanremove(Object o)移除此 Vector 中第一次出现的指定元素如果 Vector 不包含该元素,则它保持不变。
booleanremoveAll(Collection<?> c)从此 Vector 中删除其包含在指定的集合。
voidremoveAllElements()从此向量中删除所有组件并将其大小设置为零。
booleanremoveElement(Object obj)删除参数的第一个(最低索引)出现从这个向量。
voidremoveElementAt(int index)删除指定索引处的组件。
protected voidremoveRange(int fromIndex, int toIndex)从此列表中删除索引介于两者之间的所有元素 fromIndex,包括在内,和 toIndex, 独家的。
booleanretainAll(Collection<?> c)仅保留此 Vector 中包含在指定的集合。
Eset(int index, E element)将此 Vector 中指定位置的元素替换为指定的元素。
voidsetElementAt(E obj,int index)将组件设置在指定的位置 index 这个的向量是指定的对象。
voidsetSize(int newSize)设置此向量的大小。
intsize()返回此向量中的组件数。
ListsubList(int fromIndex,int toIndex)返回此列表中 fromIndex 之间的部分的视图
Object[]toArray()返回一个包含此 Vector 中所有元素的数组以正确的顺序。
 T[]toArray(T[] a)返回一个包含此 Vector 中所有元素的数组正确的顺序; 返回数组的运行时类型指定数组。
StringtoString()返回此 Vector 的字符串表示形式,包含 每个元素的字符串表示。
voidtrimToSize()将此向量的容量修剪为向量的电流 尺寸。

遍历 Vector

Enumeration vEnum = v.elements();
while (vEnum.hasMoreElements())
    System.out.print(vEnum.nextElement() + " ");

题目演练

题目描述

蓝桥王国的每个快递都包含两个参数:1.快递单号 2.快递城市。

小李是蓝桥王国的一名快递员,每天的快递分拣让他苦不堪言。

于是他想要你帮他设计一个程序用于快递的分拣(将不同快递按城市信息分开)。

输入描述

输入第一行包含一个整数 n,表示快递的个数。

接下来第 2∼N+1 行每行包含一个字符串 d 和一个字符串 c,分别快递单号以及快递对应的城市。

输出描述

输出共若干行。按城市的输入顺序依次输出城市的名称以及城市的快递个数,以及该城市的所有快递单号(单号按照输入顺序排序)。

输入输出样例

示例

输入

10 
10124214 北京
12421565  上海
sdafasdg213 天津
fasdfga124 北京
145252  上海
235wtdfsg 济南
3242356fgdfsg 成都
23423 武汉  
23423565f 沈阳
1245dfwfs 成都

输出

单号 省份

请你将单号按照城市分开,并输出。

城市按照输入顺序排序

单号按照输入顺序排序

代码实现 

import java.util.Scanner;
import java.util.Vector;

public class 迭代器 {
	
	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) {
		// TODO Auto-generated method stub
		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));
			}
		}
		
		
	}

}

队列

定义方式

Queue<String> queue = new LinkedList<String>();

部分成员函数(包括继承的)

  • add(): 增加一个元索,如果队列已满,则抛出一个异常
  • remove():移除并返回队列头部的元素,如果队列为空,则抛出一个异常
  • element():返回队列头部的元素,如果队列为空,则抛出一个异常
  • offer():添加一个元素并返回 true,如果队列已满,则返回 false
  • poll(): 移除并返问队列头部的元素,如果队列为空,则返回 null
  • peek(): 返回队列头部的元素,如果队列为空,则返回 null
  • put(): 添加一个元素, 如果队列满,则阻塞
  • take(): 移除并返回队列头部的元素,如果队列为空,则阻塞
  • size(): 返回队列长度。

 题目演练

题目描述

CLZ银行只有两个接待窗口,VIP 窗口和普通窗口,VIP 用户进入 VIP 窗口排队,剩下的进入普通窗口排队。现有 M 次操作,操作有四种类型,如下:

  • IN name V:表示一名叫 name 的用户到 VIP 窗口排队
  • OUT V:表示 VIP 窗口队头的用户离开排队
  • IN name N:表示一名叫 name 的用户到普通窗口排队
  • OUT N:表示普通窗口队头的用户离开排队

求 M 次操作结束后 VIP 窗口队列和普通窗口队列中的姓名。

输入描述

第一行是一个整数 M(1≤M≤1000),表示一共有 M 次操作。

第二行到第 M+1 行输入操作,格式如下:

  • IN name V
  • OUT V
  • IN name N
  • OUT N

输出描述

输出 M 次操作后 VIP 窗口队列和普通窗口队列中的姓名(从头到尾),先输出 VIP 窗口队列后输出普通窗口队列。

输入输出样例

示例 1

输入

5
IN xiaoming N
IN Adel V
IN laozhao N
OUT N
IN CLZ V

输出

Adel
CLZ
laozhao

代码实现

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class 队列 {
	
	static Queue<String> V = new LinkedList<String>();
	static Queue<String> N = new LinkedList<String>();

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int M;
		Scanner in = new Scanner(System.in);
		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 是一个关联容器,它提供一对一的 hash。

  • 第一个可以称为关键字(key),每个关键字只能在 map 中出现一次
  • 第二个可能称为该关键字的值(value)

定义方法

Map m1 = new TreeMap(); 

成员方法

方法名方法描述
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 视图。

题目演练

题目描述

小发明家弗里想创造一种新的语言,众所周知,发明一门语言是非常困难的,首先你就要克服一个困难就是,有大量的单词需要处理,现在弗里求助你帮他写一款程序,判断是否出现重复的两个单词。

输入描述

第 1 行,输入 N,代表共计创造了多少个单词。

第 2 行至第 N+1 行,输入 N 个单词。

输出描述

输出仅一行。若有重复的单词,就输出重复单词,没有重复单词,就输出 NO,多个重复单词输出最先出现的。

输入输出样例

示例1

输入

6
1fagas 
dsafa32j
lkiuopybncv
hfgdjytr
cncxfg
sdhrest

输出

NO

示例2

输入

5
sdfggfds
fgsdhsdf
dsfhsdhr
sdfhdfh
sdfggfds

输出

sdfggfds

代码实现

import java.awt.MenuComponent;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;


public class Map映射 {
	
	static Map map = new TreeMap<>();

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n;
		boolean flag = false;
		Scanner in = new Scanner(System.in);
		String ans = "NO";
		n = in.nextInt();
		for(int i = 0; i < n; i++) {
			String word;
			word = in.next();
			if(flag) continue;
			
			if(map.containsKey(word)) {
				flag = true;
				ans = word;
			}else {
				map.put(word, true);
			}
		}
		System.out.println(ans);

	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值