Arrays 工具类的使用

Arrays 工具类的使用,第1张

Arrays 工具类的使用

该类包含用于 *** 作数组的各种方法(如排序和搜索)。

常用方法

将数组转化为链表

public static  List asList(T... a)
import java.util.Arrays;
import java.util.List;
public class Test {
	public static void main(String[] args) {
		String[] str = {"abc", "def", "ghi", "jkl"};
		List list = Arrays.asList(str);
		for (String string : list) {
			System.out.println(string);
		}
	}
}

abc
def
ghi
jkl

二分查找

public static int binarySearch(int[] a, 
                               int key)
//数组类型可以替换为其他类型

进行二分法查找的前提是必须对数组进行排序

import java.util.Arrays;
public class Test {
	public static void main(String[] args) {
		int[] arr = {21, 32, 41, 12, 32, 11, 10, -4};
		Arrays.sort(arr);
		System.out.println(Arrays.binarySearch(arr, 23));
		System.out.println(Arrays.binarySearch(arr, 12));
	}
}

-6
3

复制数组

public static int[] copyOf(int[] original,
                           int newLength);
public static int[] copyOfRange(int[] original,
                                int from,
                                int to)
import java.util.Arrays;
public class Test {
	public static void main(String[] args) {
		int[] arr = {21, 33, 41, 12, 32, 11, 10, -4};
		int[] copy = Arrays.copyOf(arr, arr.length - 2);
		int[] copy1 = Arrays.copyOfRange(arr, 2, 5);
		System.out.println("copy");
		for (int i : copy) {
			System.out.println(i);
		}
		System.out.println("copy1");
		for (int i : copy1) {
			System.out.println(i);
		}
	}
}

copy
21
33
41
12
32
11
copy1
41
12
32

判断数组相等

public static boolean equals(int[] a,
                             int[] a2)
import java.util.Arrays;
public class Test {
	public static void main(String[] args) {
		int[] arr = {21, 33, 41, 12, 32, 11, 10, -4};
		int[] copy = Arrays.copyOf(arr, arr.length);
		System.out.println(Arrays.equals(arr, copy));
	}
}

true

填充相同的值

public static void fill(int[] a,
                        int val)
import java.util.Arrays;
public class Test {
	public static void main(String[] args) {
		int[] arr = new int[4];
		Arrays.fill(arr, 45);
		for (int i : arr) {
			System.out.println(i);
		}
	}
}

45
45
45
45
排序方法的使用

Arrays 工具类中的排序方法 sort 一般为默认排序方式,可以对数值,字符串等进行排序

import java.util.Arrays;

public class Test {
	public static void main(String[] args) {
		int[] arr = {21, 33, 41, 12, 32, 11, 10, -4};
		Arrays.sort(arr);
		for (int i : arr) {
			System.out.print(i + " ");
		}
	}
}

-4 10 11 12 21 32 33 41 

当然,我们也可以对其进行自定义排序,有两种方式

使用 Comparator 比较器

package 集合;

import java.util.Arrays;
import java.util.Comparator;

public class Test {
	public static void main(String[] args) {
		Stu s1 = new Stu("张三", 19);
		Stu s2 = new Stu("李四", 20);
		Stu s3 = new Stu("王五", 17);
		Stu[] s = new Stu[3];
		s[0] = s1;
		s[1] = s2;
		s[2] = s3;
		for (Stu stu : s) {
			System.out.println(stu);
		}
		Arrays.sort(s, new Comparator() {
			//按照年龄大小进行排序
			@Override
			public int compare(Stu o1, Stu o2) {
				// TODO Auto-generated method stub
				return o1.getAge() - o2.getAge();
			}
		});
		System.out.println("---排序后-------");
		for (Stu stu : s) {
			System.out.println(stu);
		}
	}
}

class Stu {
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Stu(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString() {
		return "Stu [name=" + name + ", age=" + age + "]";
	}
}

Stu [name=张三, age=19]
Stu [name=李四, age=20]
Stu [name=王五, age=17]
---排序后-------
Stu [name=王五, age=17]
Stu [name=张三, age=19]
Stu [name=李四, age=20]

数组元素实现 Comparable 接口

package 集合;

import java.util.Arrays;
import java.util.Comparator;

public class Test {
	
	public static void main(String[] args) {
		Stu s1 = new Stu("张三", 19);
		Stu s2 = new Stu("李四", 20);
		Stu s3 = new Stu("王五", 17);
		Stu[] s = new Stu[3];
		s[0] = s1;
		s[1] = s2;
		s[2] = s3;
		for (Stu stu : s) {
			System.out.println(stu);
		}
		Arrays.sort(s);
		System.out.println("---排序后-------");
		for (Stu stu : s) {
			System.out.println(stu);
		}
		
	}
}

class Stu implements Comparable{
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Stu(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString() {
		return "Stu [name=" + name + ", age=" + age + "]";
	}
	@Override
	public int compareTo(Stu o) {
		return this.getAge() - o.getAge();
	}
}

Stu [name=张三, age=19]
Stu [name=李四, age=20]
Stu [name=王五, age=17]
---排序后-------
Stu [name=王五, age=17]
Stu [name=张三, age=19]
Stu [name=李四, age=20]

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5712701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存