竞赛常用API

String、StringBuilder、StringBuffer

str.toCharArray();								返回字符数组
str.length();									返回字符串的长度
str.charAt(int index); 							返回指定位置的字符
str.indexOf(String s);							返回s在字符串的位置,没找到返回-1
str.trim();										返回将原字符串前导和尾随空格删除的字符串
str.split(" ");								返回以空格为区分后的字符数组
str.contains(String str);						如果包含str返回true
str.replaceFirst(str1, str2);					将字符串第一次出现的str1替换为str2
sb.insert(String str);							将str添加到当前sb中的指定位置

避免subList/subString陷阱

java.util.List 接口提供了一个实例方法
List subList(int fromIndex, int toIndex),
用于截取 原List 的一个以 fromIndex 为起始索引,以 toIndex 为终止索引(不包括)的子列表。

关于函数返回值使用的陷阱:
subList的实现代码在AbstractList类里,返回AbstractList的一个子类SubList
SubList将原来的list赋值给了l,只是改变了偏移量offset。
也就是说,subList函数返回了 原始list对象的引用
这也就意味着,对原list和返回的list做的“非结构性修改”(指不涉及list大小改变的修改),都会影响到彼此。
比如对subList sort() 后,原list和子list都会被排序

如何避免陷阱:

  • 正确使用subString/subList
    subList / subString 适合处理局部的List/String时,比如删除局部的List
    list.subList(begin, end).clear();
  • 避免使用 subList / subString
    如果有截取整体中较小的一段来做操作而不改变原整体的需要,或有截取一小段长期保存在内存中的需要

Collection

Stack

Stack<Integer> stack = new Stack<>();
stack.push(e);									把e压入堆栈顶部
stack.peek();									查看堆栈顶部的对象,但不从堆栈中移除它
stack.pop();									移除堆栈顶部的对象,并作为此函数的值返回该对象
stack.search(o);								返回对象在堆栈中的位置,从栈顶开始,以 1 为基数
stack.empty();									测试堆栈是否为空

Queue

Queue<Integer> queue = new LinkedList<>();
stack.ofeer(e);									把e加入队列底部
stack.peek();									查看队列底部的对象,但不从队列中移除它
stack.poll();									移除队列底部的对象,并作为此函数的值返回该对象
stack.isEmpty();								测试队列是否为空

Arrays

Arrays.toString(arrInt);						将数组转为字符串,类似list.toString
Arrays.binarySearch(arrInt, 44);				二分查找,需先排序过
Arrays.fill(arr,4);							将数组填充为4
Arrays.equals(arr1,arr2);						判断数组是否相等
Arrays.copyOf(arr, arr.length);				复制数组

Math

Math.max(long a, long b);    					返回两个参数中较大的值
Math.sqrt(double a);    						求参数的算术平方根
Math.abs(double a);  							返回一个类型和参数类型一致的绝对值
Math.pow(double a, double b);  					返回第一个参数的第二个参数次方。
Math.ceil(double x);   							向上取整
Math.floor(double x);  							向下取整
Math.round(double x);   						四舍五入返回整数
Math.random();									生成一个[0,1]之间的伪随机数

Integer

Integer.MAX_VALUE;								最大值
Integer.MIN_VALUE;								最小值
Integer.parseInt(String s);						String>int
Integer.toBinaryString(int i);					转二进制
Integer.toOctalString(int i);					转八进制
Integer.toHexString(int i);						转十六进制

Calendar

Calendar calendar = Calendar.getInstance();		获取一个Calendar实例
calendar.set(Calendar.YEAR, year);  			设置年(对Calender的属性赋值)
calendar.set(Calendar.MONTH, 11);0开始计数
calendar.set(Calendar.DAY_OF_MONTH, 31);1开始
calendar.get(Calendar.DAY_OF_WEEK);				取得当前这一天是一周的第几天,从1(周末)开始

BigInteger、BigDecimal和RoundingMode

大数操作,以字符串传入

//将 s 以 radix 进制传入bi
BigInteger bi=new BigInteger(String val, int radix);

//The BigInteger constant one
BigDecimal.ONE;

//加减乘除余,add、sutract、multiply、divide、remainder
bi1.add(bi2);
......

//java.math.RoundingMode
BigDecimal.ONE.divide(ratio,100,RoundingMode.HALF_UP);

Format

//DecimalFormat
DecimalFormat df=new DecimalFormat("#0.00");
System.out.println(df.format(31415.926535));

//SimpleDateFormat
new SimpleDateFormat("yyyy-MM-dd").format(getLastDay(2017, 9));

待补充…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值