在算法题中,经常要用到一些工具类的帮助,在此把常用的工具类方法作以总结。
String 类
String s1 = "Runoob" ;
String s2 = new String ( "Runoob" ) ;
String 类是不可改变的 。如果需要对字符串做很多修改 ,那么应该选择使用 StringBuffer & StringBuilder
类。字符串长度:int len = str.length();
连接字符串
concat() 方法:string1.concat(string2);
使用’+'操作符:"Hello," + " java" + "!"
方法 描述 char charAt(int index) 返回索引处的 char 值 int compareTo(Object o) 把这个字符串和另一个对象比较 int compareTo(String anotherString) 按字典顺序比较两个字符串 String concat(String str) 字符串连接到此字符串的结尾 static String copyValueOf(char[] data, int offset, int count) 复制char[] data,开始下标,复制的个数 boolean equals(Object anObject) 字符串比较 int hashCode() 字符串的哈希码 int indexOf(int ch) 字符在字符串中第一次出现的索引 int indexOf(String str) 子字符串在字符串中第一次出现的索引 String replace(char oldChar, char newChar) 返回一个新的字符串,把所有的 oldChar 替换为 newChar String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。 String substring(int beginIndex, int endIndex) 返回一个新字符串,[beginIndex, endIndex),半闭半开 char[] toCharArray() 字符串转换为字符数组 String trim() 返回字符串的副本,忽略前导空白和尾部空白 contains(CharSequence chars) 判断是否包含指定的字符 isEmpty() 判断字符串是否为空
String字符串 转化 数字 (“123” --> 123)
String s = "123" ;
int num = Integer . parseInt ( str) ; 123
int num = Integer . valueOf ( str) ; 123
float num = Float . parseFloat ( s) ; 123.0
StringBuffer 和 StringBuilder 类
StringBuffer 类 ,每次都会对 StringBuffer 对象本身进行操作 ,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer 。StringBuilder 类 在 Java 5 中被提出, StringBuilder 的方法不是线程安全的 (不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势 ,所以多数情况下建议使用 StringBuilder 类。
StringBuffer sb = new StringBuffer ( 10 ) ;
sb. append ( "java" ) ;
sb. insert ( 2 , "abc!" ) ;
sb. delete ( 2 , 5 ) ;
sb. reverse ( ) ;
方法 描述 char charAt(int index) 返回序列索引处的 char 值 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组 dst int indexOf(String str) str 第一次出现在该字符串中的索引 int indexOf(String str, int fromIndex) 从指定的索引处开始,str 第一次出现在该字符串中的索引 int length() 返回长度(字符数) void setCharAt(int index, char ch) 将索引处的字符设置为 ch String substring(int start) 新的 String,从 start 下标到结尾 String substring(int start, int end) 新的 String,[start, end),半闭半开
Arrays 类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
描述 方法 给数组赋值 fill(int[] a, int val) 对数组排序 sort(Object[] a),按升序 比较数组 equals(long[] a, long[] a2),比较数组中元素值是否相等 查找数组元素 binarySearch(Object[] a, Object key),能对排序好的数组进行二分查找,返回索引 数组转换为字符串 toString(Object[] arr);
int array[ ] = new int [ 6 ] ;
Arrays . fill ( array, 100 ) ;
Object ob[ ] = { 7 , 11 , 4 , 36 , 6 } ;
Arrays . sort ( ob) ;
Arrays . binarySearch ( ob, 6 ) ,
long [ ] arr1 = new long [ ] { 150 , 123 , 12 , 45 , 54 , 67 , 78 } ;
long [ ] arr2 = new long [ ] { 150 , 123 , 12 , 45 , 54 , 67 , 78 } ;
boolean res = Arrays . equals ( arr1, arr2) ;
int [ ] arr = { 1 , 2 , 3 , 4 , 5 } ;
System . out. println ( arr. toString ( ) ) ;
String arrString = Arrays . toString ( arr) ;
System . out. println ( arrString) ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Collections 类
void reverse ( List list)
void shuffle ( List list)
void sort ( List list)
void sort ( List list, Comparator c)
void swap ( List list, int i , int j)
void rotate ( List list, int distance)
int binarySearch ( List list, Object key)
int max ( Collection coll)
int max ( Collection coll, Comparator c)
void fill ( List list, Object obj)
int frequency ( Collection c, Object o)
int indexOfSubList ( List list, List target)
boolean replaceAll ( List list, Object oldVal, Object newVal)
集合的相关操作
集合转 Map ---- Collectors.toMap()
List < User > list = new ArrayList < > ( ) ;
list. add ( new User ( 1 , "a" ) ) ;
list. add ( new User ( 2 , "b" ) ) ;
HashMap < Integer , User > map = new HashMap < > ( ) ;
for ( User u: list) {
map. put ( u. getId ( ) , u) ;
}
HashMap < Integer , User > map1 = list. stream ( ) .
collect ( HashMap :: new , ( m, v) -> m. put ( v. getId ( ) , v) , HashMap :: putAll ) ;
Map < Integer , User > map2 = list. stream ( ) .
collect ( Collectors . toMap ( User :: getId , Function . identity ( ) ) ) ;
List < String > stringList = new ArrayList < > ( ) ;
stringList2. add ( "A" ) ;
stringList2. add ( "B" ) ;
stringList2. add ( "C" ) ;
如果参数 T [ ] arr 传入到方法,则返回 T 类型的数组。
String [ ] arr = stringList. toArray ( new String [ stringList. size ( ) ] ) ; #常用#
如果未传入参数,则返回 Object 类型的数组。
Object [ ] objectArray = stringList. toArray ( ) ;
数组转集合 ---- Arrays.asList()
int arrs[ ] = { 1 , 2 } ;
List < Integer > list = new ArrayList < > ( ) ;
for ( int ele : arrs) {
list. add ( ele) ;
}
String [ ] myArray = { "Apple" , "Banana" , "Orange" } ;
List < String > myList = Arrays . asList ( myArray) ;
List < String > myList = Arrays . asList ( "Apple" , "Banana" , "Orange" ) ;
List 转 String: String.join()
方法
List < String > list = new ArrayList < > ( ) ;
list. add ( "abc" ) ;
list. add ( "bbb" ) ;
list. add ( "def" ) ;
String s = String . join ( "" , list) ; abcbbbdef
String s = String . join ( "." , list) ; abc. bbb. def
参考:Java菜鸟教程 ,JavaGuide