JAVA--中的集合:
Set、List、Map、Queue
1)Collection
数组,这些数组一般符合特定的规则
①:List存取的顺序一致,有索引
LinkedList:底层是链表实现,线程不安全,增删快,查改慢
ArrayList:底层是数组实现,线程不安全,查询和修改快,增删慢
Vector:底层是数组实现,安全,都慢
②:Set数组中的元素不能重复,无索引
TreeSet:数组会自动排序
原理是用 compareTo()函数进行比较,当要使用自己定义的类时需要对其进行重写。
当compareTo方法返回0时,集合中只有一个元素;当返回1时(存右边),怎么存就怎么取;
当返回-1时(存左边),会倒叙存取。函数取时按照中序遍历获取对象(左、中、右)
可在构成函数中传入一个比较器(Comparator),自行定义compare()函数
HashSet:数组无序的存取
当要使用自己定义的类时需要对比较的方法--equals()和hashCode()进行重写。在eclipse中 可以使用快捷方式自己生成。
(系统会自动使用先使用hashCode()比较对象的哈希码,发现不同后再用equals()比较值是 否相同)
当自己进行重写时,equals()需要自行的将中的每个属性进行比较
hashCode()尽量返回属性特有的值以减少系统进行比较的次数
LiskedHashSet:数组有序的存取
③:Queue保持队列的顺序(先进先出)
2)Map
一对的键值
HashTable:
HashMap:
两者的区别:
一、HashMap是线程不安全的,效率高;HashTable线程安全,效率低
二、HashMap可存null键和null值,HashTable不可以
TreeMap: