首先它们6个是分属于三个类别中的,也就是List,Set,Map。 List与Set都是放单独的对象的,Map则是放一个名值对,就是可以通过一个key找到一个value。 List存东西是有顺序的,Set是没有顺序的。 List是允许重复存入的,Set不可以。 ArrayList,看这名字,你可以把它当个数组,数组你知道吧,大小是固定的,所以它的特点是查找快(数组里都有下标值),可是插入和移除却很慢 LinkedList,你可以把它当做个链表,它的特点是插入很容易,查找特别慢(至于为什么自己去看看链表吧) HashSet,用了hash嘛~查找更快了~ TreeSet,这个是自动排序的。 至于HashMap和TreeMap,和Set的差不多,HashMap查找快,TreeMap自动排序。 说说重写。 为什么要重写equals?当然是判断两个元素是否相等了,这个时候就要重写equals了,别忘了重写hashcode compareTo是用来比较的,大部分都是用来排序的,所以当你有这种需求的时候就去重写compareTo吧。