【Java-34】Set、Map容器排序

对于Set、Map若要容器内有序,那么就不能用hashset与hashmap了,需要用Treeset与Treemap,排序内部实现不是像数组与list容器一样加入元素后调用Collections.sort排序,Set、Map排序是“插入排序”,即边put边排序。当然了,如果是常规数据类型,则不必加入比较器即Map<person,String> treemap=new TreeMap<person,String>();

下面分别使用hashset与hashmap对几个人进行排序

1.实体类(对其进行排序)

package Compare_package;

public class person {
private String name;
private int id;
public person(String name, int id) {
	super();
	this.name = name;
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
@Override
public String toString() {
	// TODO Auto-generated method stub
	return "姓名:"+this.name+"   编号为:"+this.id+"\n";
}

	
}

2.比较器定义

package Compare_package;

import java.util.Comparator;

public class my_com implements Comparator<person> {

	@Override
	public int compare(person o1, person o2) {
		// TODO Auto-generated method stub
		return o1.getId()-o2.getId();
	}

}

3.排序

package Compare_package;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

import Comparactor.Goods;
import Comparactor.my_compare;
import Comparactor.my_compare2;

public class test_1 {
	public static void main(String[] args) {
		
		//人实体
		person p1=(new person("大舅",23));
		person p2=(new person("小玖",233));
		person p3=(new person("合同法国",27));
		person p4=(new person("百润发",29));
		
		//Set排序
		Set<person> treeset=new TreeSet<person>(new my_com());
		treeset.add(p1);
		treeset.add(p2);
		treeset.add(p3);
		treeset.add(p4);
		System.out.println("====================TreeMap==========================");
		System.out.println(treeset);
		
		//map排序
		Map<person,String> treemap=new TreeMap<person,String>(new my_com());
		treemap.put(p1, "4356");
		treemap.put(p2, "4356");
		treemap.put(p3, "4356");
		treemap.put(p4, "4356");
		System.out.println("====================TreeMap==========================");
		System.out.println(treemap.keySet());
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_42034217/article/details/86549669