动力节点口口相传的Java黄埔军校
Java ArrayList排序方法详解(二)
2019-08-30 来源:动力节点

  

       动力节点java培训机构小编分享的“Java ArrayList排序方法详解”的内容太长,上文内容请看:http://www.bjpowernode.com/javazixun/1681.html


在上面的类中,我们写了 getSortedJobCandidateByAge()方法,在这个方法内部我们调用了 Collections.sort()的重载版本,这个版本传递要被排序的 ArrayList 对象和比较年龄的 Comparator 对象。在 getSortedJobCandidateByName()方法内部,我们又调用了 Collections.sort()的另一个重载版本,这个版本传递要被排序的 ArrayList 对象和比较姓名的 Comparator 对象。


  让我们写一个测试类来测试我们的代码。


  JobCandidateSorterTest.java


package guru.springframework.blog.sortarraylist.comparator;

 import guru.springframework.blog.sortarraylist.comparator.JobCandidate;

 import guru.springframework.blog.sortarraylist.comparator.JobCandidateSorter;

 import org.junit.Before;

 import org.junit.Test;

 import java.util.ArrayList;

 import static org.junit.Assert.*;

 public class JobCandidateSorterTest {

 JobCandidateSorter jobCandidateSorter;

 @Before

 public void setUp() throws Exception {

 JobCandidate jobCandidate1 = new JobCandidate("Mark Smith", "Male", 26);

 JobCandidate jobCandidate2 = new JobCandidate("Sandy Hunt", "Female", 23);

 JobCandidate jobCandidate3 = new JobCandidate("Betty Clark", "Female", 20);

 JobCandidate jobCandidate4 = new JobCandidate("Andrew Styne", "Male", 24);

 ArrayList jobCandidateList = new ArrayList<>();

 jobCandidateList.add(jobCandidate1);

 jobCandidateList.add(jobCandidate2);

 jobCandidateList.add(jobCandidate3);

 jobCandidateList.add(jobCandidate4);

 jobCandidateSorter = new JobCandidateSorter(jobCandidateList);

 }

 @Test

 public void testGetSortedJobCandidateByAge() throws Exception {

 System.out.println("-----Sorted JobCandidate by age: Descending-----");

ArrayList sortedJobCandidate = jobCandidateSorter.getSortedJobCandidateByAge();

 for (JobCandidate jobCandidate : sortedJobCandidate) {

 System.out.println(jobCandidate);

 }

 }

 @Test

 public void testGetSortedJobCandidateByName() throws Exception {

 System.out.println("-----Sorted JobCandidate by name: Ascending-----");

ArrayList sortedJobCandidate = jobCandidateSorter.getSortedJobCandidateByName();

 for (JobCandidate jobCandidate : sortedJobCandidate) {

 System.out.println(jobCandidate);

 }

 }

 }


在测试类中我们向 ArrayList 中添加若干 JobCandidate 对象,并使用 Before 注释在测试单元的 setup()方法中创建了一个 JobCandidateSorter 对象。在 testGetSortedJobCandidateByAge()测试方法中我们调用了 getSortedJobCandidateByAge()方法,并打印了该方法返回的排序后的 ArrayList。在 testGetSortedJobCandidateByName()测试方法中我们调用了getSortedJobCandidateByName()方法并同样打印该方法返回的 ArrayList。测试的输出如下:


-------------------------------------------------------

T E S T S

-------------------------------------------------------

Running guru.springframework.blog.sortarraylist.comparator.JobCandidateSorterTest

-----Sorted JobCandidate by name: Ascending-----

Name: Andrew Styne, Gender: Male, age:24

 Name: Betty Clark, Gender: Female, age:20

 Name: Mark Smith, Gender: Male, age:26

 Name: Sandy Hunt, Gender: Female, age:23

-----Sorted JobCandidate by age: Descending-----

Name: Mark Smith, Gender: Male, age:26

 Name: Andrew Styne, Gender: Male, age:24

 Name: Sandy Hunt, Gender: Female, age:23

 Name: Betty Clark, Gender: Female, age:20

 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.023 sec

- in guru.springframework.blog.sortarraylist.comparator.JobCandidateSorterTest


  在本文中我们看到了 ArrayList 排序的不同方法。一种是使用 Comparable 另一种是使用 Comparator。方法的选择一直是造成程序员们困惑的原因之一。你最应该记住的就是一个 Comparable 对象可以说“我可以自己与另外一个对象比较”而一个 Comparator 对象可以说“我可以比较两个不同的对象”。你不能说一个接口比另一个要好。选择的接口取决于你需要实现的功能。


以上就是动力节点java培训机构小编介绍的“Java ArrayList排序方法详解”的内容,希望能够帮助到大家,更多java最新资讯请继续关注动力节点java培训机构官网,每天会有精彩内容分享与你。


相关免费视频教程推荐


javase—— Arraylist视频教程下载:http://www.bjpowernode.com/xiazai/2485.html


开班信息

同类文章

微信搜索“动力节点Java学院“或扫二维码

关注官方微信免费领学习资料

动力节点Java培训机构,行业口碑最好的Java培训机构。

立即抢名额