集合主要用于存储长度不确定的对象,包括Collection和Map。
Collection接口是单列集合,包括List和Set。
List接口中常用的类有ArrayList、LinkedList、Vector。ArrayList:查找较多时使用,内部用数组是实现,查找快,增(建立新数组,复制、)删(拷贝)慢。LinkedList:增删较多时使用;Vector:数组实现,线程安全,效率低。
Set接口常用类有HashSet、TreeSet。Set存储元素无序,不重复。
Set() :元素无序、不重复。 通过对象的Equals方法去重.。(去重(HashSeethe)、排序(排序))。
HashSet:速度快,去重。
遍历的两种方式;元素无序,遍历时可以使用Iterator()方法,和增强for循环的方式
TreeSet:可以按照指定顺序排序。用二叉树算法
可以按照指定的比较算法进行排序,有两种方式:
自然顺序:将要存入集合的对象的类实现Comparable接口,重写comparableTo()方法。
比较器排序:定义一个类实现Comparator接口,
在TreeSet的构造器中传入一个比较器对象Comparator
treeSet会调用Comparator对象的compare()方法来进行排序,
如果类上既有自然顺序排序,也有比较器,则比较器排序优先。因为若定义了两个存储同一类型数据的TreeSet集合,【比较器可以在每一个TreeSet中传入不同的,而类中的方法只能写一个。】想要按照两种不同的顺序排序,只有比较器可以做到。
LinkedHashSet: HashSet的子类,按照哈希算法去重,还能保留存储顺序。
LinkedHashSet:去重的同时还要保留顺序。
遍历集合的集中方式:for()循环;构造器:Iterator iter = newIterator();hasNext().next();Enumeration(Vector特的遍历方式);
增强for循环: 通用的for(类型 变量名:容器),对容器进行遍历。
HashMap<Person,String> map = new HashMap<Person,String>();
1、 HashMap()
存储的是键值对,只判断键值是否相同(hashcode()方法、equals()方法),若相同,则覆盖。Set中则是相同就不存。
Map.put();//Map中添加元素的方式 .
Map.get(key)://获得key所对应的value值。
2、 TreeMap
去重+排序
3、 遍历方式
方法一:【entryset】通过获得entry对象Set,进而遍历所有的entry
方法二:【keyset】获得key值所组成的集合,在打印的时候将集合中的元素和get(key)所获得的的value一块打印出来。
1、 hashtable实现原理和hashMap相同,都是使用hash算法对key对象去重。
线程安全,效率低。(key/map)都不允许为空。
StringBuffer StringBuilder;Vector ArrayList
2、 LinkedHashMap保留 存储位置顺序
3、 Properties类
是Hashtable的子类,通常用来操作位置文件。
创建properties文件(confis.properties)à
Properties pro =new Properties();//存储的内容都是String类型的,所以不需要使用范型
获得其中的元素pro.getProperty(“qq”);
设置值:Pro.setProperty(“qq”,123);