0.基础模板:1.常用包2.输入输出
基础:快速输入、输出: 3.字符串
字符串判等字符串判空字符串遍历字符串检索字符串提取字符串反转字符串转化字符串拆分字符串比较字符串替换 4.数组5.ArrayList6.Map
6.1HashMao6.2TreeMap 7.Set
7.1HashSet7.2TreeSet 8.linkedList
9.PriorityQueue 9.Calendar10.自定义比较器
10.1数组排序 Arrays.sort()10.2集合排序 Collections.sort()10.3自定义数组对象排序
在线OJ评测:传送门
0.基础模板:import java.util.*;
import java.lang.Math;
import java.io.*;
class Main{
public static int arr[] = new int[1000005];
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
System.out.print(" " + a);
System.out.printf("%d", a);
}
}
1.常用包
import java.util.Scanner; import java.util.Map; import java.util.Collection; import java.lang.Math;2.输入输出 基础:
import java.util.Scanner; Scanner sc = new Scanner(System.in);
// 字符串
String s = sc.next();
String str = sc.nextLine(); // 读取一行,含空格
// 数字
int n = sc.nextInt();
while(sc.hasNext()){ // 控制台手工输入ctrl+z退出
int a=input.nextInt();
}
System.out.printf(); // 可使用格式控制符进行格式化输出。
System.out.printf("%07d", a);
String.format("%07d", a);
System.out.printf("%.2d", doub);
System.out.print() //
System.out.println() // 自动换行。
Integer.toBinaryString(i) // 二进制输出
快速输入、输出:
BufferedReader
int read() 读取单个字符。String readLine() 读取一个文本行。
BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));3.字符串
str.length(); // 字符串(有括号) nums.length; // 数组(无括号)字符串判等
// 字符串判等,不能== s1.equals(s2);字符串判空
isEmpty() <==> length()=0字符串遍历
char s = str.charAt(index); // 访问某个字符
str.setCharAt(int index, char ch);//将指定索引处的字符替换为ch
// 字符串转数组
char[] chars = str.toCharArray();
for(s1 : s.toCharArray()){} // 字符串遍历
字符串检索
int s =str.indexOf("文艺倾年"); // 检索字符串
字符串提取
s = str.substring(0,1); // (,] 范围字符串反转
str = new StringBuilder(str).reverse().toString();字符串转化
str.toUpperCase(); // 大写 str.toLowerCase(); // 小写 int a = Integer.parseInt(str); // 字符串→数字 String s = String.valueOf(value); // Other→字符串字符串拆分
String[] strs = str.split(" "); // 字符串分割
str.trim(); // 去除头尾空格
字符串比较
str1.compareTo(str2); // 字典序比较 '12'.'21'<0字符串替换
str.replace("文艺倾年","小航"); // 字符串替换
4.数组
Arrays.fill(nums, 0); // 填充数组为0 Arrays.sort(nums); // 升序 // 数组拷贝 numsA.clone(numsB); // 把numsB的值拷贝给numsA Arrays.copyOf(int[] a, int length);//从a数组的第一个元素开始复制,复制length个元素。 Arrays.copyOfRange(int[] a, int begin, int to);//从a数组begin开始复制,到to-1位置结束。5.ArrayList
Collections.fill(list,0); // 填充数组为0 // 增删查改 list.add(1); list.add(3,4); // 将4插入到第三个位置 list.remove(3); // 删除下标为3的 list.set(1, 2); // 将1下标的元素改为2 list.get(1); Collections.sort(list); // 排序 Collections.max(list); // 最大值 Collections.min(list); Collections.shuffle(list); //list洗牌 Collections.reverse(list); // 翻转 list.toArray() // list变数组 list.isEmpty() //list是否为空 list.clear(); //移除所有元素。 list.size();6.Map 6.1HashMao
map.put(key, value); // 插入 // 查找 if(map.containsKey(k)); if(map.containsvalue(v)); int value = map.get(k); // 取值 map.clear(); // 清空 map.remove(key); // 移除指定键的映射关系 // 遍历 Iterator6.2TreeMapit = map.keySet().iterator(); while(it.hasNext()){ Integer key=it.next(); Integer value=map.get(key); } // 提取其中所有key for(Integer key : map.keySet()){ ... } // 提取所有value for(String value : map.values()){ ... }
TreeMap是基于红黑树实现的,是有序的
tree.firstKey(); // 第一个(最低)键。 tree.lastKey(); // 最后一个(最高)键7.Set 7.1HashSet
set.add(a); // 插入 set.remove(b); // 删除 set.contains(a); // 查询 set.remove(a); // 移除 set.clear(); // 清除7.2TreeSet
tree.first(); //返回第一个元素 tree.last(); //返回最后一个元素 tree.higher(E e) // 返回严格大于给定元素的最小元素,不存在返回null tree.lower(E e) // 返回严格小于给定元素的最大元素,不存在返回null8.linkedList
linkedList9.PriorityQueuepets = new linkedList (Pet.arrayList(5));//生成五个Pet对象 // 取第一个 pets.getFirst() // 列表为空返回NoSuchElement-Exception pets.element() // 列表为空返回NoSuchElement-Exception pets.peek() // 列表为空返回null // 移除第一个,并返回列表头 pets.removeFirst() // 列表为空返回NoSuchElement-Exception pets.remove() // 列表为空返回NoSuchElement-Exception pets.poll() // 列表为空返回null pets.addFirst(new Rat()); // 插入头部 // 插入尾部 pets.addLast(new Rat()); pets.add(new Rat()); pets.offer(new Rat()); pets.set(2,new Rat());//将替换为指定的元素
默认小顶堆
// 默认初始容量为11 PriorityQueue9.CalendarQ = new PriorityQueue<>(); // 初始化 add(E e)//将指定的元素插入此优先级队列。 offer(E e) // 将指定元素插入此优先队列 poll() // 获取并移除第一个 remove(Object o) // 移除指定元素 clear()//清空 peek() // 获取第一个元素,及最小或最大元素 contains(Object o) // 如果包含指定元素返回true iterator()//返回在此队列中的元素上进行迭代的迭代器。 size() // 返回元素个数
它的构造方法被protected修饰,所以无法直接创建该对象。
常用字段:
时间单位字段:
| 字段 | 解释 |
|---|---|
| YEAR | 年 |
| MONTH | 月 |
| DATE / DAY_OF_MONTH | 日 |
| HOUR_OF_DAY | 时 |
| MINUTE | 分 |
| SECOND/MILLISECOND | 秒/毫秒 |
| DAY_OF_WEEK | 周几 |
| DAY_OF_YEAR | 一年的第多少天 |
| WEEK_OF_YEAR | 一年的第多少周 |
| WEEK_OF_MONTH | 日历式的第几周 |
| DAY_OF_WEEK_IN_MONTH | 某月中第几周 |
public class CalendarDemo {
public static void main(String[] args) {
// 其日历字段已由当前日期和时间初始化:
Calendar rightNow = Calendar.getInstance(); // 子类对象
// 获取年
int year = rightNow.get(Calendar.YEAR);
// 获取月
int month = rightNow.get(Calendar.MONTH);
// 获取日
int date = rightNow.get(Calendar.DATE);
//获取几点
int hour=rightNow.get(Calendar.HOUR_OF_DAY);
//获取上午下午
int moa=rightNow.get(Calendar.AM_PM);
if(moa==1)
System.out.println("下午");
else
System.out.println("上午");
System.out.println(year + "年" + (month + 1) + "月" + date + "日"+hour+"时");
rightNow.add(Calendar.YEAR,5);
rightNow.add(Calendar.DATE, -10);
int year1 = rightNow.get(Calendar.YEAR);
int date1 = rightNow.get(Calendar.DATE);
System.out.println(year1 + "年" + (month + 1) + "月" + date1 + "日"+hour+"时");
}
}
10.自定义比较器
10.1数组排序 Arrays.sort()
Arrays.sort(arr, new Comparator10.2集合排序 Collections.sort()() { // arr是数组名,<>中是待排序集合所包含的数据类型 public int compare(int a, int b){ // 待排序集合中的元素是什么数据类型,这里的两个函数参数就定义为什么数据类型 return a - b; 升序 // return b - a; 降序 // a - b > 0 交换ab位置,反之不变, 即返回值为正数时,交换数组中正在比较的 //两个元素的位置,返回值为负数时,不交换。 } })
TreeSet10.3自定义数组对象排序s = new TreeSet<>(new Comparator (){ public int compare(Integer a, Integer b) { return b - a; } });
法一:
//对pair类实现Comparable接口后,直接调用sort函数排序就行了。 static class pair implements Comparable{ int a, b, w; pair(int u, int v, int x){ a = u; b = v; w = x; } public int compareTo(pair p) { return this.w - p.w; } }
法二:
Arrays.sort(s, new Comparator() { public int compare(student a, student b) { // return a.age - b.age; // 按照年龄大小升序排列 } });



