El uso y principio subyacente de TreeSet

Según el código fuente, la capa inferior de TreeSet usa TreeMap

package sxt.gaoqi.container;

import java.util.HashMap;
import java.util.Map;

public class JsHashSet
{

	Map map;
	
	private static final Object PRESENT = new Object();
	
	public JsHashSet()
	{
		map = new HashMap();
	}
	
	public int size()
	{
		return map.size();
	}
	
	public void add(Object o)
	{
		map.put(o, map);
	}
	
	@Override
	public String toString()
	{
		StringBuilder sb = new StringBuilder();
		
		sb.append("[");
		for(Object key : map.keySet())
		{
			sb.append(key + ",");
		}
		
		sb.setCharAt(sb.length() - 1, ']');
		
		return sb.toString();
	}
	
	public static void main(String[] args)
	{
		JsHashSet set = new JsHashSet();
		
		set.add("a");
		set.add("b");
		set.add("c");
		set.add("a");
		System.out.println(set);
		
		JsHashSet set2 = new JsHashSet();
		set2.add(new Emp2(3, 5000));
		set2.add(new Emp2(5, 6000));
		set2.add(new Emp2(1, 8000));
		set2.add(new Emp2(2, 3000));
		System.out.println(set2);
		
	}

}

class Emp2 implements Comparable<Emp2>
{

	int id;
	double salary;
	
	public Emp2(int id, double salary)
	{
		this.id = id;
		this.salary = salary;
	}

	@Override
	public int compareTo(Emp2 o)
	{
		if(this.salary < o.salary)
		{
			return -1;
		}
		else if(this.salary > o.salary)
		{
			return 1;
		}
		else
		{
			if(this.id < o.id)
			{
				return 1;
			}
			else if(this.id > o.id)
			{
				return -1;
			}
			else
			{
				return 0;
			}
		}
	}
	
	@Override
	public String toString()
	{
		return "id: " + id + "-salary: " + salary;
	}
	
}

Supongo que te gusta

Origin blog.csdn.net/gjs935219/article/details/105505556
Recomendado
Clasificación