TreeMap是一个有序的key-value集合,是非线程安全的,基于红黑树(Red-Black tree)实现。其映射根据键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
当自定义比较器时,需要自定义类实现java.lang.Comparable接口,并重写compareTo()方法。
根据键的自然顺序进行排序
public static void main(String[] args) {Map map = new TreeMap<>();map.put("name", "zzc");map.put("age", "18");map.put("sex", "m");map.put("name", "wzc");map.put("angle", "yhp");System.out.println(map);
}
如何排序呢?进入到TreeMap中的put(key, value)
cmp = kpareTo(t.key);
通过Comparable中的compareTo()方法进行排序的。
这里的key是String类型的,String类实现了Comparable接口并且重写了compareTo()方法:
public int compareTo(String anotherString) {int len1 = value.length;int len2 = anotherString.value.length;int lim = Math.min(len1, len2);char v1[] = value;char v2[] = anotherString.value;int k = 0;while (k < lim) {char c1 = v1[k];char c2 = v2[k];if (c1 != c2) {return c1 - c2;}k++;}return len1 - len2;
}
字符串比较大小就是通过比较字符串中的字符大小,这样就可以实现排序。
【注意】:如果TreeMap中存储的元素是自定义类并且没有实现Comparable接口会怎么样?下面就尝试一下:
自定义一个User类:
public class User {private Integer age;private String name;private String email;public User(Integer age, String name, String email) {this.age = age;this.name = ail = email;}
}
测试类:
public class
本文发布于:2024-01-30 19:12:10,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170661332922219.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |