本帖最后由 Bermuda 于 2014-8-7 08:06 编辑
集合: 做什么:存取元素,类比数组,只不过根据存的元素不一样分了很多种 Java容器:List, Set, Map 对元素增删改查 保证唯一,就用Set。不保证唯一,就用List Collection单列集合 Map 双列集合 Conllection:元素无序,允许重复 添加元素: add ( ) 删除元素:1 clear ( )//清空 2 remove (obj)//删除集合中指定对象,集合长度改变 判断元素:1 boolean contains (obj) //集合是否包含 2 boolean isEmpyt ( ) //集合中是否有元素 取元素:Iterator iterator( ) //迭代器,获取集合中所有元素 int size ( ) //集合中有几个元素 ---List:(列表)元素有序,允许重复 增删改查:add(位置,元素) remove (index); set (index, element) get (indx) //元素第一次出现位置 int indexOf (obj)不存在-1 //反向索引元素位置int lastIndexOf (Object) 迭代器:ListIterator it = list.listIterator;//迭代时可操作元素 ---ArrayList 线程不安全,查找快增删慢,底层数组,取元素可用 ---LinkedList 线程安全,查找慢增删快,底层链表 ---Vector 线程安全已经被ArrayList替代 ---Set:(集)元素无序,不允许重复 ---HashSet 通过Hash值确定唯一性:覆盖HashCode方法 覆盖equals方法 ****** 保证元素的唯一,其实就是根据对象的hashCode和equals方法来决定的。如果我们往集合中存放自定义的对象,那么保证其唯一,就必须复写hashCode和equals方法建立属于当前对象的比较方式 ---TreeSet 具有比较功能 实现比较两种方法:1自定义比较器 2使元素具有比较功能 ****** TreeSet集合排序有两种方式,Comparable和Comparator区别: 1:让元素自身具备比较性,需要元素对象实现Comparable接口,覆盖compareTo方法。 2:让集合自身具备比较性,需要定义一个实现了Comparator接口的比较器,并覆盖compare方法,并将该类对象作为实际参数传递给TreeSet集合的构造函数。 第二种方式较为灵活。
将比较器对象作为参数传递给TreeSet的构造函数TreeSet(比较器儿子对象),Comparator接口比较器(就两方法compare equals),当两种比较方式都存在时,以比较器为主
双列集合 Map:(映射)键值不允许重复,以键值对形式存放 添加元素:put (key,value) 删除元素:value remove (key) void clear ( ) //清空 判断元素:boolean isEmpty( ) //是空吗 boolean containsKey(key) //是否包含key boolean containsValue(value) //是否包含value
获取元素:int size( ) //返回长度 value get (key) //键获取值,返回null该键不存在,特例hashmap可存(null,null) Collection values():获取map集合中的所有的值。 迭代器: Map没有迭代器将Map集合转成Set集合 : 1 keySet 2 entrySet
原理:map中是没有迭代器的,collection具备迭代器,只要将map集合转成Set集合,可以使用迭代器了。之所以转成set,是因为map集合具备着键的唯一性,其实set集合就来自于map,set集合底层其实用的就是map的方法
---HashMap 线程不安全,可存放null键null值,覆盖HashCode ( )方法,覆盖equals ( )方法 ---TreeMap 对元素排序 排序的两种方法:1使元素具有比较功能 2自定义比较器 Conllections:操作集合 集合转数组:Collections中的toArray ( )方法
Arrarys:操作数组 数组转集合:Arrays中的asList ( )方法
|