您的位置:首页 > 其它

数组和集合

2016-05-01 23:05 204 查看
数组:可以存放多个同一类型的数据,如果存放的是对象类型则存放的是对象的引用,需要实例化。缺点是数组大小在定义时必须先指定并且无法改变

集合:不能存放基本类型数据,只能存放引用类型对象,包括List、Set、Map、Properties

List:以线性方式存储元素,允许存放重复对象,包括ArrayList、LinkedList

ArrayList:代表长度可变的数组,允许对元素进行随机快速访问但是插入和删除元素的速度较慢

LinkedList:采用链表数据结构,对顺序访问进行了优化,插入和删除元素较快但随机访问速度较慢

Set:集合中的对象不按特定方式存储,并且没有重复对象(根据equals方法判断),包括HashSet、LinkedHashSet、TreeSet

HashSet:按照哈希算法存取集合中的对象,无序,存取速度快,当向集合中加入一个对象时会调用对象的hashCode()方法来获得哈希码,然后根据这个哈希码进一步计算出对象在集合中的存放位置。同一个对象的哈希码也肯定相同。如果覆盖了对象的equals()方法必须同时覆盖hashCode()方法否则HashSet无法正常工作,如果equals()方法比较不相等应尽量保证对象拥有不同的哈希码,减少哈希冲突,提高性能

LinkedHashSet:HashSet的子类,不仅实现了哈希算法还实现了链表数据结构,有序,能够提高插入和删除元素的性能

TreeSet:实现了SortedSet接口,支持自然排序(默认升序)和客户化排序功能,当程序修改后TreeSet不会重新排序

自然排序--->参与排序的对象必须为同一类型并且都实现Comparable接口,通过实现compareTo方法完成排序。返回0表示两者相等,返回值>0表示前者大于后者,返回值<0表示后者大于前者

客户化排序--->创建实现Comparator接口的比较器(实现compare方法,返回0表示两者相等,返回值>0表示前者大于后者,返回值<0表示后者大于前者)为参数的TreeSet对象

Map:Map映射是一种把键对象和值对象映射的集合,他的每一个元素都包含一对键对象和值对象,而值对象仍然可以是Map类型。元素键对象key不能重复,对于值对象value没有唯一性要求,可以将任意多个键对象映射到同一个值对象上。包括:HashMap、LinkedHashMap、TreeMap

HashMap:按照哈希算法来存取集合的键对象,无序,存取速度快。为了保证HashMap正常工作要求两个对象equals方法相等时hashCode方法返回的哈希码也一样

LinkedHashMap:HashMap的子类,有序,不仅实现了哈希算法还实现了链表数据结构

TreeMap:实现了SortMap接口,支持对键对象进行自然排序(默认)和客户化排序功能

Properties:一种特殊的Map类,集合中每个元素包含一对键值,采用同步机制会影响操纵集合性能,load方法可以用来从输入流中读取键值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: