在我前一篇学习记录中讲到java|| 集合基础知识(二)中提到这么一段话:
在我扫代码过程中马上就出现问题了。我再看一位朋友总结的集合demo,也发现了同样的问题,或许很多朋友和我一样对句话想当然了。
其实 在我上个例子中显然,我并没有提供比较器或者比较接口,但程序照样能成功运行。
我花了几分钟测试了一下,发现两种情况:
1.只有在要用树集比较自定义类型时,如:
SortedSet<Item> parts=new TreeSet<>();
这里的Item类
2.有多个变量,不按系统默认,需要自定义按照某一变量来进行比较的,如:
parts.add(new Item("Horlly",3701));//这里有两个变量 一个description,一个number。系统自动排序按照number自小到大。
NavigableSet<Item> sortByDescription=new TreeSet<>(Comparator.comparing(Item::getDescription));
以上这两种情况才需要重写。
其他像一些系统自带的类型如String,int类型,系统会自动比较。