数组与集合的根本区别在于数组定义长度后不可增加,当添加元素超过数组长度时需要重新定义。而集合是可以自由增加的,根据添加元素的个数决定自身长度。但会占用内存。所以当数组元素为固定个数时推荐使用数组,数组元素不确定时推荐使用集合。
集合的根接口为collection,collection实现了两个子接口是list和set,list又实现了3个子接口为arraylist,linkedlist,vector,其中ArrayList和vector底层使用数组实现,具有查询修改快,增删慢的特点。linkedlist底层使用链表实现,具有增删快,查询修改慢的特点。ArrayList和linkedlist同样都是线程不安全的但是有个工具类可以让他们两线程安全,vector线程安全,但是在实际开发中是被取代的,不用记忆。set接口又实现了两个子接口为hashset和TreeSet。由哈希算法和二叉树算法实现。