从头认识java-14.4 Java提供的数组的实用功能(2)
来源:互联网 发布:python urlencode 编辑:程序博客网 时间:2024/06/03 06:38
接着上一章节,我们继续介绍Java提供的数组的实用功能。
3.元素的对比Comparator
package com.ray.ch14;import java.util.Arrays;import java.util.Comparator;public class Test {public static void main(String[] args) {MyClass[] myClasses = new MyClass[3];MyClass myClass1 = new MyClass();MyClass myClass2 = new MyClass();MyClass myClass3 = new MyClass();myClass1.setId(3);myClass2.setId(2);myClass3.setId(1);myClass1.setName("myClass1");myClass2.setName("myClass2");myClass3.setName("myClass3");myClasses[0] = myClass1;myClasses[1] = myClass2;myClasses[2] = myClass3;Arrays.sort(myClasses, new MyComparator());System.out.println(Arrays.toString(myClasses));}}class MyComparator implements Comparator<MyClass> {@Overridepublic int compare(MyClass myClass1, MyClass myClass2) {return myClass1.getId() > myClass2.getId() ? 1 : 0;}}class MyClass {private int id = 0;private String name = "";public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "id:" + id + "&name:" + name;}}
输出:
[id:1&name:myClass3, id:2&name:myClass2, id:3&name:myClass1]
要使用Comparator,就必须实现Comparator接口,主要就是compare方法的实现,这样就可以自定义类的对比,我们上面采用的是id 的对比,id较小的排前面,大的排后面。
4.数组的排序Arrays.sort
接口上面的例子,我们继续扩展,主要是通过Array.sort来对数组排序,上面的例子也有说明。
5.在有序数组中查找。
我们修改一下上面的例子:
package com.ray.ch14;import java.util.Arrays;import java.util.Comparator;public class Test {public static void main(String[] args) {MyClass[] myClasses = new MyClass[3];MyClass myClass1 = new MyClass();MyClass myClass2 = new MyClass();MyClass myClass3 = new MyClass();myClass1.setId(3);myClass2.setId(2);myClass3.setId(1);myClass1.setName("myClass1");myClass2.setName("myClass2");myClass3.setName("myClass3");myClasses[0] = myClass1;myClasses[1] = myClass2;myClasses[2] = myClass3;Arrays.sort(myClasses, new MyComparator());System.out.println(Arrays.toString(myClasses));System.out.println("myClass2's pos:"+ Arrays.binarySearch(myClasses, myClass2, new MyComparator()));}}class MyComparator implements Comparator<MyClass> {@Overridepublic int compare(MyClass myClass1, MyClass myClass2) {return myClass1.getId() > myClass2.getId() ? 1 : 0;}}class MyClass {private int id = 0;private String name = "";public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "id:" + id + "&name:" + name;}}
输出:
[id:1&name:myClass3, id:2&name:myClass2, id:3&name:myClass1]
myClass2's pos:1
我们在里面加入了binarySearch这个二分法查找算法,用它来查找myClass2这个对象在数组里面的位置。
注意:binarySearch对于有序序列的查找是没问题的,但是对于无序序列的查找,就会出现莫名其妙的问题(主要是位置的错误)。
总结:这一章节我们主要介绍了Java提供的数组的实用功能。
这一章节就到这里,谢谢。
-----------------------------------
目录
0 0
- 从头认识java-14.4 Java提供的数组的实用功能(2)
- 从头认识java-14.4 Java提供的数组的实用功能(1)
- 从头认识java-4.8 数组的初始化(1)
- 从头认识java-4.8 数组的初始化(2)-可变参数列表
- 《Java编程思想》数组的实用功能
- 从头认识java-15.7 Map(1)-使用数组来简单模拟Map的创建
- 从头认识java-4.6 成员的初始化
- 从头认识java-11.1 不变的字符串
- 从头认识java-13.10 边界的作用
- 从头认识java-10.6 finally(3)-异常的丢失
- 从头认识java-15.2 Collection的常用方法(1)
- 从头认识java-1.5 继承(2)
- 从头认识java-14.2 进一步了解数组
- 从头认识java-14.3 多维数组
- JAVA数组的认识
- 从头认识java-18.2 基本的线程机制(2)-Executors的使用
- 从头认识java-11.5 扫描输入(2)-scanner的边界与使用正则表达式扫描
- 从头认识java-15.1 填充容器(2)-利用Collection的addAll方式
- 多道程序 cpu利用率
- Service小结
- 《leetCode》: Gray Code
- iOS基础之OC:对象作为对象方法的参数
- 【LEETCODE】21-Merge Two Sorted Lists
- 从头认识java-14.4 Java提供的数组的实用功能(2)
- Day-3 写完了&联欢会
- android部分控件如何获取到输入的值
- log4j
- 实战c++中的智能指针unique_ptr系列-- 使用std::unique_ptr代替new operator(错误:‘unique_ptr’ is not a member of ‘std’)
- Tomcat 配置
- STL_算法_查找算法(search、find_end)
- 将GridView中的数据导出到Excel / Word中
- 【JAVA笔记——道】JAVA内存操作 sun.misc.Unsafe类