Java集合类学习

来源:互联网 发布:关于网络文明的论文 编辑:程序博客网 时间:2024/05/17 09:19

集合主要用于存储长度不确定的对象,包括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(类型 变量名:容器),对容器进行遍历。


二、Map

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);






0 0
原创粉丝点击