Java中常用工具类——Arrays
Arrays
创建数组
copyOf
复制数组(截取方法)copyOfRange
复制数组(范围方法)fill
填充数组(将很多字段填充成相同的内容)
import java.util.Arrays;public class Main {public static void main(String[] args) {String[] name = new String[] { "王涛", "刘涛", "孙涛", "赵涛"};// copyOf复制数组(截取方法)String[] name1 = Arrays.copyOf(name, 3);String[] name2 = Arrays.copyOf(name, 5);System.out.println(Arrays.toString(name1));System.out.println(Arrays.toString(name2));// copyOfRange 复制数组(范围方法)String[] name3 = Arrays.copyOfRange(name, 3,5);String[] name4 = Arrays.copyOfRange(name, 1,4);System.out.println(Arrays.toString(name3));System.out.println(Arrays.toString(name4));// fill 填充数组(将很多字段填充成相同的内容)String[] name5 = new String[5];Arrays.fill(name5, "邓涛");System.out.println(Arrays.toString(name5));}
}
运行结果如下:
[王涛, 刘涛, 孙涛]
[王涛, 刘涛, 孙涛, 赵涛, null]
[赵涛, null]
[刘涛, 孙涛, 赵涛]
[邓涛, 邓涛, 邓涛, 邓涛, 邓涛]
比较数组
equals
判断两个数组是否相等
import java.util.Arrays;public class EqualsMain {public static void main(String[] args) {// equalsString[] name6 = new String[] {"王涛", "刘涛", "孙涛", "赵涛"};String[] name7 = Arrays.copyOf(name6, 4);String[] name8 = Arrays.copyOf(name6, 2);if (Arrays.equals(name6, name7)) {System.out.println("数组7与数组6元素完全相同!");}if (!Arrays.equals(name7, name8)) {System.out.println("数组8与数组6元素不完全相同!");}}
}
运行结果如下:
数组7与数组6元素完全相同!
数组8与数组6元素不完全相同!
数组排序
sort
对数组进行排序,按照首字母的升序进行排列的。基本数据类型是按照双轴快速排序的,引用数据类型是按照TimSort
排序的,使用了Peter Mcllroy
的乐观排序和信息理论复杂性中的技术
import java.util.Arrays;public class SortMain {public static void main(String[] args) {String[] name = new String[] {"wang", "chen", "xu"};String[] namecopy = Arrays.copyOf(name,3);Arrays.sort(namecopy);System.out.println(Arrays.toString(namecopy));}
}
运行结果如下:
[chen, wang, xu]
数组检索
binarySerach
二分查找,既可以精确检索,也可以模糊检索
import java.util.Arrays;public class SortMain {public static void main(String[] args) {String[] name = new String[] {"wang", "chen", "xu"};String[] namecopy = Arrays.copyOf(name,3);Arrays.sort(namecopy);System.out.println(Arrays.toString(namecopy));int exact = Arrays.binarySearch(namecopy,"xu");System.out.println(exact);int exact1 = Arrays.binarySearch(namecopy,"WANG", String::compareToIgnoreCase);System.out.println(exact1);}
}
运行结果如下:
[chen, wang, xu]
2
1
数组流转
stream
将数组转换成流,即可进行流的相关操作
import java.util.Arrays;public class StreamMain {public static void main(String[] args) {String[] info = new String[] {"today", "tomorrow", "yesterday"};System.out.println(Arrays.stream(info).count());}
}
运行结果如下:
3
打印数组
toString
因为数组是一个对象,直接打印只会打印出内存地址
import java.util.Arrays;public class ToStringMain {public static void main(String[] args) {String[] info = new String[] {"today", "tomorrow", "yesterday"};System.out.println(info);System.out.println(Arrays.toString(info));}
}
运行结果如下
[Ljava.lang.String;@1b6d3586
[today, tomorrow, yesterday
数组转化List
asList
尽管数组已经非常强大,但是它自身可以操作的工具方法很少,比如判断数组中是否包含某个数值,如果能转换成list的话,就非常简单,因为Java的集合了框架List中封装了很多常用的方法。
import java.util.Arrays;
import java.util.List;public class ListMain {public static void main(String[] args) {String[] info = new String[] {"today", "tomorrow", "yesterday"};List<String> list = Arrays.asList(info);System.out.println(list.contains("tomorrow"));}
}
运行结果如下:
true
!! 如果单纯这样转换是无法转化成真正的List,如果想对元素进行操作,可以进一步转化,转化成真正的java.util.ArrayList
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class ListMain {public static void main(String[] args) {String[] info = new String[] {"today", "tomorrow", "yesterday"};List<String> list = Arrays.asList(info);System.out.println(list.contains("tomorrow"));List<String> list2 = new ArrayList<>(Arrays.asList(info));list2.add("the day before yesterday");list2.remove("today");System.out.println(list2);}
}
运行结果如下:
true
[tomorrow, yesterday, the day before yesterday]
函数式编程入口
setAll()
parallelPrefix()