Demo1排序

Posted 987m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Demo1排序相关的知识,希望对你有一定的参考价值。

1.初步完成排序

重写equlas方法(hashCode()哈希值性能)   toString   hashset   

 1 public class Person 
 2     
 3     //定义属性
 4     private String name;
 5     private int age;
 6     
 7     
 8     
 9     @Override
10     public int hashCode() 
11         final int prime = 31;
12         int result = 1;
13         result = prime * result + age;
14         result = prime * result + ((name == null) ? 0 : name.hashCode());
15         return result;
16     
17 
18     @Override
19     public boolean equals(Object obj) 
20         if (this == obj)
21             return true;
22         if (obj == null)
23             return false;
24         if (getClass() != obj.getClass())
25             return false;
26         Person other = (Person) obj;
27         if (age != other.age)
28             return false;
29         if (name == null) 
30             if (other.name != null)
31                 return false;
32          else if (!name.equals(other.name))
33             return false;
34         return true;
35     
36 
37     public String getName() 
38         return name;
39     
40     
41     public void setName(String name) 
42         this.name = name;
43     
44     
45     public int getAge() 
46         return age;
47     
48     
49     public void setAge(int age) 
50         this.age = age;
51     
52 
53     public Person() 
54     
55     public Person(String name,int age) 
56         super();
57         this.name=name;
58         this.age=age;
59         
60     
61 
62     @Override
63     public String toString() 
64         return name+".."+age;
65     
66     
67 
import java.util.HashSet;

public class PersonTest 
    /**
     * 
     * @author Vivtol
     */
    public static void main(String[] args) 
        // TODO Auto-generated method stub
        HashSet<Person> setperson = new HashSet<Person>();
        setperson.add(new Person("a",11));
        setperson.add(new Person("c",44));
        setperson.add(new Person("b",22));
        setperson.add(new Person("d",66));
        setperson.add(new Person("b",22));
        System.out.println(setperson);
    

 输出结果:[d..66, a..11, c..44, b..22]  并没有达到需求

2.完善代码

Comparable<T>接口  重写comparaTo方法  

 

package com.itvitol_01;

public class Person implements Comparable<Person>
    
    //定义属性
    private String name;
    private int age;
    
    
    
    @Override
    public int hashCode() 
        final int prime = 31;
        int result = 1;
        result = prime * result + age;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    

    @Override
    public 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;
    

    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 Person() 
    
    public Person(String name,int age) 
        super();
        this.name=name;
        this.age=age;
        
    

    @Override
    public String toString() 
        return name+".."+age;
    
    
    @Override
    public int compareTo(Person p) 
        if(this.age>p.age) 
            return 1;    
        else if(this.age<p.age) 
            return -1;
        else 
            return this.name.compareTo(p.name);
        
    
package com.itvitol_01;

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class PersonTest 
    /**
     * 
     * @author Vivtol
     */
    public static void main(String[] args) 
        // TODO Auto-generated method stub
//        HashSet<Person> setperson = new HashSet<Person>();
        Set<Person> setperson = new TreeSet<Person>();
        setperson.add(new Person("a",11));
        setperson.add(new Person("c",44));
        setperson.add(new Person("b",22));
        setperson.add(new Person("d",66));
        setperson.add(new Person("b",22));
        System.out.println(setperson);
    

 输出结果:[a..11, b..22, c..44, d..66]    希望大家能完善一下我的代码哟!

以上是关于Demo1排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构(C语言版) 排序 算法设计Demo1

Java数组冒泡与选择排序和改版

4.1_8种常用排序算法(上)

《算法图解》之快速排序

Java 之 Arrays 类

Linux Shell经典面试题