Arrays工具类的使用

java.util.Arrays类中包含了很多对数组操作的方法,可以让我们对数组很方便的进行操作,比如说对数组进行排序,查找数组中的元素,下面,我把这个类中常用的方法做一个简单的介绍,如果大家还有问题,可以留言,我们进行交流。
(1)把数组转换成集合
public static <T> List<T> asList(T... a)
此方法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。
public static void main(String[] args) {
List<String> list = Arrays.asList("haha", "hehe", "xixi");
System.out.println(list);
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
}


(2)把数组对象以字符串的形式输出
public static String toString(int[] a)
返回指定数组内容的字符串表示形式。
public static void main(String[] args) {
int[] arr = { 3, 1, 5, 2, 4 };
System.out.println(Arrays.toString(arr));
}


(3)排序
public static void sort(int[] a)
对指定的 int 型数组按数字升序进行排序。
public static void main(String[] args) {
int[] arr = { 3, 1, 5, 2, 4 };
System.out.println(Arrays.toString(arr));
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}


(4)二分查找
public static int binarySearch(int[] a,int key)
使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
做二分查找时,有个前提就是数组必须已经是排序好的。
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
System.out.println(Arrays.binarySearch(arr, 2));
}


(5)这里针对排序,在给大家说一点内容。
public static <T> void sort(T[] a,Comparator<? super T> c)
根据指定比较器产生的顺序对指定对象数组进行排序。


如果现在有一个对象数组,每个对象有name和age属性,我想按照年龄排序,怎么办呢?
就可以使用上面列出的方法,代码如下:
public class Student{
private String name;
private int age;


public Student() {
}


public Student(String name, int age) {
this.name = name;
this.age = 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;
}


@Override
public String toString() {
return name + ":" + age;
}
}


public static void main(String[] args) {
Student[] sa = new Student[5];
Student s11 = new Student("刘备", 30);
Student s22 = new Student("关羽", 25);
Student s33 = new Student("张飞", 20);
Student s44 = new Student("赵云", 27);
Student s55 = new Student("刘备", 23);
sa[0] = s11;
sa[1] = s22;
sa[2] = s33;
sa[3] = s44;
sa[4] = s55;
System.out.println(Arrays.toString(sa));
Arrays.sort(sa, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int num = s2.getAge() - s1.getAge();
int num2 = (num == 0) ? s1.getName().compareTo(s2.getName())
: num;
return num2;
}
});
System.out.println(Arrays.toString(sa));
}




还有好几个方法,在此列出,如果有兴趣的同学,可以研究,有问题可以留言。
public static int[] copyOf(int[] original, int newLength) 
复制指定的数组,newLength是新数组的长度,如果newLength<=原来的长度。则就是以前的长度个数据,如果newLength>原来的长度,后面补充数据(0,false,null)。
public static int[] copyOfRange(int[] original, int from, int to) 
将指定数组的指定范围复制到一个新数组。 
public static boolean equals(int[] a, int[] a2)
如果两个指定的 int 型数组彼此相等,则返回 true。 
public static boolean deepEquals(Object[] a1,Object[] a2)
如果两个指定数组彼此是深层相等 的,则返回 true。
static void fill(int[] a, int val)
将指定的 int 值分配给指定 int 型数组的每个元素。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值