文章目录
Arrays类
概述
java.util.Arrays类是一个与数组相关的工具类, 里面提供了大量实现数组常见操作的静态方法。可以实现数组的排序和查找,数组的比较,对数组添加元素,复制数组,将数组转化为字符串等功能。这些方法都有对基本类型的重载方法。
Arrays类的常用方法
asList(T…a)
将数组转化为的集合, 需注意返回的集合类型必须与数组类型一致, 但因为集合不能添加基本类型的数据, 所以若要使用基本类型的数据, 必须使用基本类型包装类。
代码示例
import java.util.Arrays;
import java.util.Collection;
public class asListDemo {
public static void main(String[] args) {
String [] a = {
"你","好","吗"};//定义一个字符串数组
Collection list1 = Arrays.asList(a);//将数组转换为集合
System.out.println(list1); //[你, 好, 吗]
}
}
fill 填充数组
Arrays类中提供了 fill() 方法, 可以对数组进行填充。fill 可以填充的类型既包括基本数据类型,也包括引用数据类型。
import java.util.Arrays;
//fill()填充数据
public class fillDemo {
public static void main(String[] args) {
//填充基本类型
int [] arr = new int[5];
Arrays.fill(arr,5);
System.out.println(Arrays.toString(arr));
boolean [] arr1 = new boolean[5];
Arrays.fill(arr1,true);
System.out.println(Arrays.toString(arr1));
//填充引用类型
String s = "hello";
String [] arr2 = new String[5];
Arrays.fill(arr2,s);
System.out.println(Arrays.toString(arr2));
}
}
equals 比较
1.比较;两个非同一数组是否相等, 而数组本身的equals判断另一个数组是否是它本身;
2.声明: public static boolean equals (type[] a, type[] a2);
3.参数的类型可以是基本数据类型和引用数据类型的任意一种;
4.返回: 如果两个相等,则返回true, 否则返回false。
import java.util.Arrays;
public class equalsDemo {
public static void main(String[] args) {
int [] a = {
1,2,3};
int [] b = {
1,2,3};
System.out.println(Arrays.equals(a,b));//true
String [] c= {
"点","赞"};
String [] d= {
"点","赞"};
System.out.println(Arrays.equals(c,d));//true
}
}
排序
sort排序
1. 如果是数值, sort默认按照升序从小到大;
2. 如果是字符串, sort默认按照字母升序;
3. sort(double[] a, int fromIndex, int toIndex) 对指定区间进行排序,包含开始,不含结束。
代码示例
import java.util.Arrays;
//sort排序---底层使用快速排序法(快排)
public class sortDemo {
public static void main(String[] args) {
//对数字数组默认进行升序排列--->从小到大
int [] a = {
23,31,0,23,1,1,1,2};
Arrays.sort(a);
System.out.println(Arrays.toString(a));//[0, 1, 1, 1, 2, 23, 23, 31]
//对字母默认按照字母顺序升序--->实质是按照ASCII码表进行的
char [] b = {
'c','s','A','a','S'};
Arrays.sort(b);
System.out.println(Arrays.toString(b));//[A, S, a, c, s]
//sort(数组a,索引1,索引2)--->对指定区间进行排序,包含开始,不含结束
int [] c = {
23,31,0,23,1,1,1,2};
Arrays.sort(c,0,4);
System.out.println(Arrays.toString(c));//[0, 23, 23, 31, 1, 1, 1, 2]
}
}
自定义排序
自定义类实现Comparable接口,重写CompareTo方法。
compareTo() 方法: Arrays类中的sort方法在排序比较时每次调用compareTo方法会传来两个对象相互比较,结果有三种: “>0” “==0” “<0” , 即自定义排序规则。
import java.util.Arrays;
public class MySortDemo implements Comparable<MySortDemo>{
private String name;
private int age;
//构造方法
public MySortDemo(){
}
public MySortDemo(String name,int age){
this.name = name;
this.age = age;
}
//重写排序方法---compartor---按照员工年龄排序
@Override
public int compareTo(MySortDemo other) {
return Integer.compare(age,other.age);
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
class Main{
public static void main(String[] args) {
MySortDemo[] people = new MySortDemo[4];
people[0] = new MySortDemo("JIM",20);
people[1] = new MySortDemo("TOM",29);
people[2] = new MySortDemo("Lue",19);
people[3] = new MySortDemo("LuFu",18);
Arrays.sort(people);
for (MySortDemo e: people) {
System.out.println("name:"+e.getName()+"\t age:"+e.getAge());
}
/*输出
name:LuFu age:18
name:Lue age:19
name:JIM age:20
name:TOM age:29
*/
}
}
二分搜索/折半查找
-
binSearch——使用二分搜索算法搜索指定数组。
-
前提 :数组必须有序。
-
如果没有找到,会返回一个负数,如果有则返回key的索引值。
-
也可以在数组中的指定区间进行查找。包含开始,不包含结束。
-
声明:
public static int binarySearch(type[] a,type k) public static int binarySearch(long[] a,int fromIndex,int toIndex,long key)
参数:
a - 要搜索的数组 key - 要搜索的值 fromIndex - 要排序的第一个元素的索引(包括) toIndex - 要排序的最后一个元素的索引(不包括)
代码示例
import java.util.Arrays;
public class binarySearchDemo {
public static void main(String[] args) {
int [] a = {
1,2,3,4,5,6,7,8};
System.out.println(Arrays.binarySearch(a,7));//6
System.out.println(Arrays.binarySearch(a,0));//-1
System.out.println(Arrays.binarySearch(a,2,4,3));//2
}
}
toString()
1. 声明: public static String toString(type[] a)
2. 描述: 返回指定数组内容的字符串表示形式
3. 基本数组, 字符串表示形式由数组的元素列表组成, 扩在[], 相邻元素用" , "(逗号加空格)分隔
代码示例
import java.util.Arrays;
public class toStringDemo {
public static void main(String[] args) {
int [] a ={
1,2,3,6,2,2,5,21,6};
System.out.println(Arrays.toString(a));
}
}
toString()的代码示例好尴尬, 这玩意儿就是大家一直用的, 各位如果有兴趣就去翻翻源码, 不想翻的会用就行,事实上toString方法在后面的学习中更多的会要求自己重写, 以满足开发需求。