标签:return 22 phone int age javaSE21 Person public
TreeSet
- 基于HashCode计算元素存放位置
- 基于排列顺序实现元素不=重复
public class Person implements Comparable<Person>{//必须先继承
private String name ;
private int age,phone;
@Override
public int compareTo(Person o) {//重写compareTo方法
int n = this.getName().compareTo(o.getName());
int n1= this.age-o.getAge();
return n==0?n1:n;
}
public Person() {
}
public Person(String name, int age, int phone) {
this.name = name;
this.age = age;
this.phone = phone;
}
@Override
public String toString() {
return name+":"+"年龄"+age+"电话"+phone;
}
@Override
public int hashCode() {
int n1 = this.name.hashCode();
int n2 = age;
int n3 = phone;
return n1 + n2 + n3;
}
@Override
public boolean equals(Object obj) {
if (this==obj)
return true;
if (obj==null)
return false;
if (obj instanceof Person){
Person p = (Person) obj;
if (this.name.equals(p.getName())&&this.age==p.getAge()&&this.phone==p.phone){
return true;
}
}
return false;
}
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;
}
public int getPhone() {
return phone;
}
public void setPhone(int phone) {
this.phone = phone;
}
}
/**
* TreeSet中的元素必须实现Comparable接口
* 否则程序无法判断将数据放在哪儿
* compareTo方法返回值为0,认为是元素重复
*/
public class Test {
public static void main(String[] args){
TreeSet<Person> treeSet = new TreeSet<>();
Person p1 = new Person("莉莉",19,190);
Person p2 = new Person("小明",20,110);
Person p3 = new Person("小刚",19,180);
treeSet.add(p1);
treeSet.add(p2);
treeSet.add(p3);
System.out.println(treeSet.size());
System.out.println(treeSet.toString());
}
}
Comparator比较器
- 可实现定制比较
- 有比较器就不用实现Comparable接口
public class Test {
public static void main(String[] args){
TreeSet<Person> persons = new TreeSet<>(new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
int n1 = o1.getAge()-o2.getAge();
int n2 = o1.getName().compareTo(o2.getName());
return n1==0?n2:n1;
}
});
Person p1 = new Person("莉莉",19,190);
Person p2 = new Person("小明",20,110);
Person p3 = new Person("小刚",19,180);
persons.add(p1);
persons.add(p2);
persons.add(p3);
System.out.println(persons.size());
System.out.println(persons.toString());
}
}
用Comparator接口实现字符串按照长度排序
public class Test {
public static void main(String[] args) {
TreeSet<String> str = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int n1 = o1.length()-o2.length();
int n2 = o1.compareTo(o2);
return n1==0?n2:n1;
}
});
str.add("xyz");
str.add("abcde");
str.add("abc");
str.add("f");
System.out.println(str.size());
System.out.println(str);
}
}
Map集合
Map接口
- 特点:存储一对数据(Key—Value),无序,无下标,键不可重复,值可以重复
标签:return,22,phone,int,age,javaSE21,Person,public 来源: https://www.cnblogs.com/wpxz1005/p/15322056.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。