一、Java List 類(lèi)
二、Java List 排序
三、Java List 遍歷
四、Java List 去重
五、Java List 轉(zhuǎn)Array
二、Java List排序(兩種方法)
1. 利用Collections類(lèi)的 java.util.Collections.sort(java.util.List, java.util.Comparator) 方法,自定義比較器對(duì)象對(duì)指定對(duì)象進(jìn)行排序
對(duì)Person類(lèi)對(duì)象按照起身高(降序)排序,當(dāng)升高相同按id升序
class Person{
private int id;
private String name;
private float tall;
public int getId() {return id;}
public void setId(int id) {this.id = id;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public float getTall() {return tall;}
public void setTall(float tall) {this.tall = tall;}
}
//比較器
class PersonComparator implements Comparator<Person>{
public int compare(Person p1, Person p2 ) {
if ( p1.getTall() > p2.getTall() ) return -1;
else if ( p1.getTall() == p2.getTall() ) {
if (p1.getId() > p2.getId() ) return 1;
else if ( p1.getId() == p2.getId() ) return 0;
else return -1;
}
else return 1;
}
}
public class listSort {
public static void main(String[] args) {
// TODO Auto-generated method
Person p1 = new Person();
p1.setId(005); p1.setName("Jerry"); p1.setTall(165);
Person p2 = new Person();
p2.setId(003); p2.setName("Morty"); p2.setTall(171.1f);
Person p3 = new Person();
p3.setId(001); p3.setName("Rick"); p3.setTall(176);
Person p4 = new Person();
p4.setId(004); p4.setName("Tom"); p4.setTall(171.1f);
List<Person> list = new ArrayList<>();
list.add(p1); list.add(p4); list.add(p3); list.add(p2);
System.out.println("*****before sort*****");
for(Person ps:list)
System.out.println("id: "+ps.getId()+ " name: "+ps.getName() + " score: " + ps.getTall() );
Collections.sort(list, new PersonComparator());
System.out.println("*****after sort*****");
for(Person ps:list)
System.out.println("id: "+ps.getId()+ " name: "+ps.getName() + " score: " + ps.getTall() );
}
}
運(yùn)行結(jié)果
*****before sort*****
id: 5 name: Jerry score: 165.0
id: 4 name: Tom score: 171.1
id: 1 name: Rick score: 176.0
id: 3 name: Morty score: 171.1
*****after sort*****
id: 1 name: Rick score: 176.0
id: 3 name: Morty score: 171.1
id: 4 name: Tom score: 171.1
id: 5 name: Jerry score: 165.0
2. 利用Collections類(lèi)的 java.util.Collections.sort(java.util.List, java.util.Comparator) 方法,自定義比較器對(duì)象對(duì)指定對(duì)象進(jìn)行排序
對(duì)一個(gè)Person類(lèi),讓其按照一個(gè)Order屬性進(jìn)行排序,我們可以讓Person類(lèi)實(shí)現(xiàn)Comparable接口,重寫(xiě)其CompareTo方法即可,如:讓Person按照身高屬性升序排序。
class Person implements Comparable<Person>{
private String name;
private Integer tall; //compareTo只能是對(duì)象之間的比較,不能適用于int等基本類(lèi)型,要使用int的封裝類(lèi)型Integer
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public Integer getTall() {return tall;}
public void setTall(Integer tall) {this.tall = tall;}
public int compareTo(Person ps) { //compareTo只能是對(duì)象之間的比較,不能適用于int boolean等基本類(lèi)型
return this.getTall().compareTo( ps.getTall() ); //這里定義排序規(guī)則
}
}
public class listSort2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Person> list = new ArrayList<>();
Person p1 = new Person(); Person p2 = new Person(); Person p3 = new Person();
p1.setName("Rick"); p1.setTall(174);
p2.setName("Morty"); p2.setTall(178);
p3.setName("Jerry"); p3.setTall(176);
list.add(p1); list.add(p2); list.add(p3);
//排序
Collections.sort(list);
for (Person p : list) {
System.out.println(p.getName());
}
}
}
運(yùn)行結(jié)果
Rick
Jerry
Morty