关于set想说的(二)之Set Demo
java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料
保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。
上篇博文关于set想说的(一)之Set的实现类及必要的方法 ,总结了一些常见的Set实现类、各自的特点,以及各自实现类需要的方法。这篇博文写一个Demo。
Person.java
1package org.fan.learn.set;
/**
* Created by Administrator on 2016/3/22.
*/
public class Person implements Comparable<Person> {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
//if (o == null || getClass() != o.getClass()) return false;
/*
if (!(o instanceof Person)) return false;
Person person = (Person) o;
return name.equals(person.name);
*/
return o instanceof Person &&
(name.equals(((Person) o).name));
}
@Override
public int hashCode() {
return name.hashCode();
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
public int <a href="http://www.cfei.net/archives/tag/compareto" title="浏览关于“compareTo”的文章" target="_blank" class="tag_link">compareTo</a>(Person o) {
if (this == o) return 0;
if (o == null) return 0;
Person person = (Person) o;
return name.compareTo(person.name);
}
}
其中equals()方法、hashCode()方法、toString()方法都是IDEA自动生成的。 compareTo方法IDEA会帮你生成框架,里面的内容要自己实现。
Main.java
1package org.fan.learn.set;
import java.util.*;
/**
* Created by Administrator on 2016/3/22.
*/
public class SetTest {
public static void main(String[] args) {
//Integer中实现了Comparable接口,实现了equals方法,hashCode方法。
// Set<Integer> set = new HashSet<Integer>();
Set<Integer> set = new TreeSet<Integer>();
Collections.addAll(set, 1, 2, 1);
System.out.println("Integer Set : " + set);
//String中实现了Comparable接口,实现了equals方法,hashCode方法。
//Set<String> stringSet = new HashSet<String>();
Set<String> stringSet = new TreeSet<String>();
//Collections.addAll(stringSet, "12", "034");
Collections.addAll(stringSet, "12 034".split(" "));
System.out.println("String Set : " + stringSet);
Person p1 = new Person("fan");
Person p2 = new Person("hehe");
Person p3 = new Person("fan");
Person p4 = new Person("axyz");
//Person p5 = null; //加到TreeSet中会报错,NPE(NullPointerException),因为往里放时会调用compareTo方法。
Set<Person> personHashSet = new HashSet<Person>();
Collections.addAll(personHashSet, p1, p2, p3, p4);
System.out.println("personHashSet : " + personHashSet); //顺序不一定
Set<Person> personLinkedHashSet = new LinkedHashSet<Person>();
Collections.addAll(personLinkedHashSet, p1, p2, p3, p4);
System.out.println("personLinkedHashSet : " + personLinkedHashSet); //按照插入顺序
Set<Person> personTreeSet = new TreeSet<Person>();
Collections.addAll(personTreeSet, p1, p2, p3, p4);
System.out.println("personTreeSet : " + personTreeSet); //按照字母顺序
}
}
执行结果如下所示:
javasetDemohashCodecompareTo
因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。
后续会有更多的精彩的内容分享给大家。
支付宝扫一扫
微信扫一扫
