Java——集合(TreeSet)
生活随笔
收集整理的這篇文章主要介紹了
Java——集合(TreeSet)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package com.wsq.set; //這里進行調用Person()方法,要進行導包
import java.util.TreeSet;
import com.wsq.bean.Person;
public class Demo3_TreeSet {
/*** TreeSet集合是用來對元素進行排序的,同樣它也可以保證元素的唯一* 當compareTo()方法返回0的時候,只有一個元素* 當compareTo()方法返回正數的時候,怎么存,就怎么取* 當compareTo()方法返回負數的時候,集合會倒序存儲* */public static void main(String[] args) {
// demo1();
// demo2();
// demo3();
// demo4(); }private static void demo4() {TreeSet<Person> yy = new TreeSet<>();yy.add(new Person("zhangshan",23));yy.add(new Person("lisi",13));yy.add(new Person("wangwu",33));yy.add(new Person("zhaoliu",43));yy.add(new Person("aaaa",53));System.out.println(yy);
}private static void demo3() {TreeSet<Person> wsq = new TreeSet<>();wsq.add(new Person("李四",13));wsq.add(new Person("張三",23));wsq.add(new Person("王五",43));wsq.add(new Person("趙六",33));System.out.println('張' + 0);System.out.println('李' + 0);System.out.println('王' + 0);System.out.println('趙' + 0);System.out.println(wsq);
}private static void demo2() {TreeSet<Person> wsq = new TreeSet<>();/*** TreeSet底層是一個二叉樹:兩個叉,小的存儲在左邊(返回負數),大的存儲在右邊(返回正數),相等就不存(返回0);* CompareTo()方法,在TreeSet集合如何存儲元素,取決于CompareTo()方法的返回值* * 1,第一次返回0,集合中只有一個元素* 2,第二次返回-1(負數),集合會將存儲的元素倒序* 3,第三次返回1(正數),集合會怎么存。怎么取* */wsq.add(new Person("張三",23));wsq.add(new Person("李四",13));wsq.add(new Person("周七",13));wsq.add(new Person("王五",43));wsq.add(new Person("趙六",33));System.out.println(wsq);
}private static void demo1() { // TreeSet集合是用來對元素進行排序的,同樣它也可以保證元素的唯一,即系統會自動按順序排序TreeSet<Integer> yy = new TreeSet<>();yy.add(3);yy.add(1);yy.add(1);yy.add(2);yy.add(2);yy.add(3);yy.add(3);System.out.println(yy);
}}
package com.wsq.bean;public class Person implements Comparable<Person>{//實現接口之后,要重寫Comparable里面的CompareTo(Person o)這個抽象方法private String name;private int age;public Person() {super();}public Person(String name, int age) {super();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;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Person other = (Person) obj;if (age != other.age)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + age;result = prime * result + ((name == null) ? 0 : name.hashCode());return result;}/*public int compareTo(Person o) { //當CompareTo()方法返回0的時候,集合中只有一個元素return 0;}*//*public int compareTo(Person o) { //當CompareTo()方法返回正數的時候,集合怎么存,就怎么取return 1;}*//*public int compareTo(Person o) { //當CompareTo()方法返回負數的時候,集合會倒序存儲return -1;}*//*public int compareTo(Person o) {return this.age - o.age; //年齡是比較的唯一條件,若年齡相同但姓名不同,那么只會存儲第一個年齡的人的信息}*//*public int compareTo(Person o) {int num= this.age - o.age; //年齡比較的是主要條件return num == 0 ? this.name.compareTo(o.name) : num; //姓名是比較的次要條件 }*//*@Overridepublic int compareTo(Person o) { //按照姓名在字典中的次序排序int num = this.name.compareTo(o.name); //姓名是主要條件 return num ==0 ? this.age - o.age : num; //年齡是次要條件}*/public int compareTo(Person o){int length = this.name.length() - o.name.length(); //比較姓名長度為主要條件int num = length == 0 ? this.name.compareTo(o.name) : length; //比較姓名內容為次要條件return num == 0 ? this.age - o.age : num; //比較年齡也為次要條件 }
}
總結
以上是生活随笔為你收集整理的Java——集合(TreeSet)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java——n个数的全排列
- 下一篇: Java——集合(输入5个学生的信息按总