Guava(二):重写的那些Object方法
来源:互联网 发布:程序员考试难吗 编辑:程序博客网 时间:2024/06/07 18:03
说道equal方法,相信大家都是有爱有恨,爱的是此方法可以很方便的进行两个对象的是否相同比较,可恨的是你不知到调用他的对对象是否符合要求,也就是是不是会出现空指针调用也就是说如果这样的调用:
new Object().equals(new Object());
本身这句代码没有错,但是呢要是:以下的name是一个null的值怎么办,会出现怎么样的结果??
name.equals(name1);
这就是我们无法想象的错误,据了解世界上95%的程序bug于null有关,关于null 我们在以后的文章中在做具体的探讨。然而就是以上我们很容易出现问题的代码,Guava在做了很好的包装,以后就是使用他了,这样我们可以很好的避免一些bug,而且还能很好的写出好更加优雅的代码。当然好的代码还是要自我约束。培养代码洁癖。
在来说一下Guava中的toString()方法和hashCode(),其实我写这个不是说我们必须这样写,也就是看到这个模块,我了解了一下java中的hashCode()方法的用意,下面我们来看一下java中的hashCode()的作用:提高数据在散列中的存储效率。
java代码中我们经常会重写equals()方法,但是千万要记住在重写了equals()方法之后也要记得重写hashCode()方法,为什么呢,这个我们在另外一篇文章中进行探讨。
下面我们来看一下我们今天进行的Guava的学习笔记,废话不说,上代码:
compareTo(Person that) { return ComparisonChain.start() import com.google.common.base.Objects;
import com.google.common.collect.ComparisonChain;import com.google.common.collect.Lists;import com.google.common.collect.Ordering;import java.util.Collections;import java.util.List;/** * Created by luyangli on 15-9-16. * <p/> * 常见的Object方法 */public class ObjectTest { public static void main(String[] args) { System.out.println(Objects.equal("q", "q")); System.out.println(Objects.equal("a", null)); System.out.println(Objects.equal(null, "a")); System.out.println(Objects.equal(null, null)); System.out.println(Objects.hashCode("a", "b", "c")); System.out.println(Objects.toStringHelper("ObjectTest").add("x", 1).toString()); //new Object().hashCode(); Person changhaha = new Person("常哈哈", 23); Person lilulu = new Person("李露露", 24); List<Person> personList = Lists.newArrayList(); personList.add(lilulu); personList.add(changhaha); for (Person person : personList) { System.out.println(person.getName() + ":" + person.getAge()); } System.out.println("====排序后===="); Collections.sort(personList); for (Person person : personList) { System.out.println(person.getName() + ":" + person.getAge()); } } static class Person implements Comparable<Person> { private String name; private int age; public Person() { } public Person(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 int compareTo(Person other) {// int i = this.name.compareTo(other.getName());// if (0 == i) {// return this.age - other.getAge();// }// return i;// }
public int compareTo(Person that) { return ComparisonChain.start() .compare(this.getName(), that.getName()) .compare(this.getAge(), that.getAge()) .result();}
}}
其中我屏蔽掉的是我使用常规的数据排序操作,我们来看一下我们的执行结果:
truefalsefalsetrue126145ObjectTest{x=1}李露露:24常哈哈:23====排序后====常哈哈:23李露露:24
我们可以看到其实Guava就是对于我们可能犯得低级错误进行了预防,可是就是这样的预防,我们很受用。
0 0
- Guava(二):重写的那些Object方法
- 重写Object常用的方法
- 重写对象的equals(Object)方法,同时重写Hashcode()方法
- Guava学习笔记:复写的Object常用方法
- Guava学习笔记:复写的Object常用方法
- Java-类库-Guava-复写的Object常用方法
- Guava学习笔记【4】:复写的Object常用方法
- Activity中那些需要重写的方法
- Activity中那些需要重写的方法
- Activity中那些需要重写的方法
- 如何重写Object的Equals方法?
- Java 重写Object类的常见方法
- Object 祖宗类方法的重写注意事项
- Java 重写Object类的常见方法
- 方法的重写、Object类、继承、super
- Object类方法重写
- [Google Guava] 1.3-常见Object方法
- [Google Guava] 1.3-常见Object方法
- 堆排序算法
- window.print() web打印的一些技巧
- Handler详解之一
- SQL Network Interfaces, error: 50 - 发生了 Local Database Runtime 错误。无法创建自动实例
- Redis与Memcached的区别
- Guava(二):重写的那些Object方法
- 安卓学习路线
- Android--广播接收者
- 用window.print()打印指定div里面的内容
- Handler详解之二
- Open CV 学习经验总结
- 常量指针与指针常量
- 基于maven搭建ssh项目
- 算加权成绩(MATLAB)