scanner.next() 从缓冲区接收字符遇到空格后停止。 相当于 cin 和 scanf
scanner.nextLine() 从缓冲区接收字符,并且接收空格,遇到换行才停止,并且会自动舍弃换行。 相当于 gets()
scanner.hasNext() 判断缓存区中还有没有数据,有返回true, 否则等待输入。
scanner.hasNextInt() 判断输入的是不是int型的数据,是的话返回true 否则继续扫描缓冲区,或者等待输入。
scanner.hasNextDouble() 判断输入的是不是double型的数据,是的话返回true 否则继续扫描缓冲区,或者等待输入。
日期、数学
这里只举例常用的Java类,不用去记每种用法,太多也记不住,主语要直到怎么用就可以,具体用法到时候也可以具体参考文档
BigInteger 和 BigDecimal 大整数与大浮点数
Math类:四舍五入用 Math.round(double x);
在java中String类不可变的,创建一个String对象后不能更改它的值。所以如果需要对原字符串进行一些改动操作,就需要用StringBuilder类或者StringBuffer类,StringBuilder比StringBuffer更快一些,缺点是StringBuilder不是线程安全的,但在算法竞赛中一般我们用不到多线程。所以,主要推荐使用StringBuilder类。
Calendar 类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
List
ArrayList 类可以实现可增长的对象数组。
;//构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。
;//使用指定的初始容量和容量增量构造一个空的向量。
linkedList是List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,linkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。
Map
Map是一种key-value键值对存储的容器结构
HashMap是基于哈希表的 Map 接口的实现,是无序的
TreeMap是基于红黑树实现的,是有序的, 可进行排序。此实现为 containsKey、get、put 和 remove 操作提供受保证的 log(n) 时间开销
Set
set容器的特点是不包含重复元素,也就是说自动去重。
HashSet基于哈希表实现,无序。
TreeSet基于红黑树实现。有序。
因为TreeSet和TreeMap是基于红黑树实现,所以可以二分查找一个比当前元素大的最小元素,或者比当前元素小的最大元素。
PriorityQueue
优先队列,本质是一个堆, 默认情况下堆顶每次都保留最小值(小根堆),每插入一个元素,仍动态维护堆顶为最小值。
Sort排序
在做一些算法题时常常会需要对数组、自定义对象、集合进行排序. 在java中对数组排序提供了Arrays.sort()方法,对集合排序提供Collections.sort()方法。对自定义对象排序时要自己重写比较器,对象数组则调用Arrays.sort(),对象集合则调用Collections.sort()。两个方法默认都是升序,也可以重写比较器,实现降序。