您的位置:首页 > 编程语言 > Java开发

Java 集合的排序

2018-04-08 17:25 330 查看
package sort;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
/**
* 对集合进行排序
* 两种方式:
* 1.implements Comparable<Student>----------public int compareTo(Student o)
* 2.实现Comparator<String>()接口------------
* public int compare(Entry<String, String> o1, Entry<String, String> o2)
* 		o1/o2 升序
* 		o2/o1 降序
* 3.Map集合进行排序:
* 	  可以对KEY进行升序
* 	  可以对KEY进行降序
* 	  可以对VALUE升序/降序
*
*/
public class Mapsort {
public static void main(String[] args) {
Map<String, String> map = new TreeMap<>(new Comparator<String>() {

@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);// 降序
}
});

map.put("c", "ccccc");
map.put("a", "aaaaa");
map.put("b", "bbbbb");
map.put("d", "ddddd");

Set<String> set = map.keySet();// 默认升序
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
System.out.println(key + "---" + map.get(key));
}

System.out.println("--------------------------------");
Map<String, String> map2 = new TreeMap<>();
map2.put("d", "ddddd");
map2.put("b", "bbbbb");
map2.put("a", "aaaaa");
map2.put("c", "ccccc");
//1.要将SET集合(map.entryset)转换成list;
List<Map.Entry<String, String>> list = new ArrayList<>(map2.entrySet());
//2.然后需要使用比较器进行排序
Collections.sort(list, new Comparator<Map.Entry<String, String>>() {

@Override
public int compare(Entry<String, String> o1, Entry<String, String> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});

//3.遍历list
for (Entry<String, String> map3 : list) {
System.out.println(map3.getKey()+"--"+map3.getValue());
}

}
}

package sort;

public class Student implements Comparable<Student> {
private String name;
private Integer age;

public Student(String name, Integer age) {
this.name = name;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

@Override
public int compareTo(Student o) {
if (this.age > o.getAge()) {
return 1;
} else if (this.age < o.getAge()) {
return -1;
} else {
return 0;
}
}

}
package sort;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

public class TestStudent {
public static void main(String[] args) {
List<Student> list = new ArrayList<>();
Student s1 = new Student("TY", 18);
Student s2 = new Student("HHH", 20);
Student s3 = new Student("ZZZ", 20);
Student s4 = new Student("M", 100);

list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);

System.out.println("按照age从小到大顺序排列:");
Collections.sort(list);
Iterator<Student> iterator =list.iterator();
//调用了Collections工具类中的sort方法

while(iterator.hasNext()){
Student student = iterator.next();
System.out.println(student.getName()+"---"+student.getAge());
}

System.out.println("--------------------------------------------------------");

System.out.println("按照age从大到小顺序排列:");
Comparator<Student> comparator = Collections.reverseOrder();
Collections.sort(list,comparator);
Iterator<Student> iterator2 =list.iterator();

while(iterator2.hasNext()){
Student student = iterator2.next();
System.out.println(student.getName()+"---"+student.getAge());
}

System.out.println("--------------------------------------------------------");

System.out.println("按照name字典中顺序排列:");
Collections.sort(list, new Comparator<Student>() {

@Override
public int compare(Student o1, Student o2) {
return o1.getName().compareTo(o2.getName());
}
});

Iterator<Student> iterator3 =list.iterator();
while(iterator3.hasNext()){
Student student = iterator3.next();
System.out.println(student.getName()+"---"+student.getAge());
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息