黑马程序员-03-java中的集合特性
2014-04-04 08:41
197 查看
------- android培训、java培训、期待与您交流! ---------- Collection | ArrayList:底层的数据结构使用的是数组结构.特点:查询速度很快.但是增删稍慢. | Vector:底层是数组数据结构.线程同步.被ArrayList替代了.因为效率低. | --Set : 元素是无序,元素不可以重复. 1: Collection(在java.util中)定义了集合框架的共性功能。 ①,添加 add(e);确保此 collection 包含指定的元素(可选操作)。 addAll(collection); ②,删除 remove(e);从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。 removeAll(collection); clear();移除此 collection 中的所有元素(可选操作)。 ③,判断。 contains(e);如果此 collection 包含指定的元素,则返回true。 isEmpty();如果此 collection 不包含元素,则返回true。 ④,获取 iterator();返回在此 collection 的元素上进行迭代的迭代器。 size();返回此 collection 中的元素数。 ⑤,获取交集。 retainAll();仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。 ⑥,集合变数组。 toArray();返回包含此 collection 中所有元素的数组。Ⅰ,add方法的参数类型是Object。以便于接收任意类型对象。Ⅱ,集合中存储的都是对象的引用(地址)List:特有方法。凡是可以操作角标的方法都是该体系特有的方法。取出LIst集合中元素的方式:get(int index):通过脚标获取元素。iterator():通过迭代方法获取迭代器对象。增 add(index,element);向列表的尾部添加指定的元素(可选操作)。 addAll(index,Collection);删 remove(index);移除列表中指定位置的元素(可选操作)。 改 set(index,element);用指定元素替换列表中指定位置的元素(可选操作)。查 get(index):返回列表中指定位置的元素。 subList(from,to);返回列表中指定的fromIndex(包括 )和 toIndex(不包括)之间的部分视图。 listIterator();返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。 int indexOf(obj):返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。 ListIterator listIterator();返回此列表元素的列表迭代器(按适当顺序)。 LinkedList: 特有方法: addFirst();将指定元素插入此列表的开头 addLast(); getFirst();返回此列表的第一个元素。 getLast(); 获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException removeFirst();移除并返回此列表的第一个元素。removeLast(); 获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException在JDK1.6出现了替代方法。 offerFirst();在此列表的开头插入指定的元素。 offerLast(); peekFirst();获取但不移除此列表的第一个元素;如果此列表为空,则返回null。 peekLast(); pollFirst();获取并移除此列表的第一个元素;如果此列表为空,则返回null。 pollLast();List集合特有的迭代器。ListIterator是Iterator的子接口。 在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。所以,在迭代器时,只能用迭代器的放过操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的listIterator方法获取。public interface Iterator<E>对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。| HashSet: 底层数据够是哈希表.HashSet:底层数据结构是哈希表。是线程不安全的。不同步。向HashSet中添加(add())元素的时候,对于重复的元素,只在HashSet中保留一个副本。 | -- TreeSet:可以对Set集合中的元素进行排序。 HashSet保证元素唯一性的原理: 是通过元素的两个方法,hashCode和equals来完成。 如果元素的HashCode值相同,才会判断equals是否为true。 如果元素的hashcode值不同,不会调用equals。 注意,对于判断元素是否存在,以及删除等操作, 依赖的方法是元素的hashcode和equals方法。TreeSet:通过compareTo来保证元素的唯一性。元素是以二叉树的形式存放的TreeSet排序的第一种方式:让元素自身具备比较性。 元素需要实现Comparable接口,覆盖compareTo方法。也种方式也成为元素的自然顺序,或者叫做默认顺序。TreeSet的第二种排序方式。 当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。在集合初始化时,就有了比较方式。 2:Map集合:
接口 Map<K,V>
K- 此映射所维护的键的类型
V- 映射值的类型该集合存储键值对。一对一对往里存。而且要保证键的唯一性。和Set很像。其实,Set底层就是使用了Map集合。Map |HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。 |--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。 1,添加。 put(K key, V value)将指定的值与此映射中的指定键关联(可选操作)。 putAll(Map<? extends K,? exta8dfends V> m) 2,删除。 clear() 从此映射中移除所有映射关系(可选操作)。 remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 3,判断。 containsValue(Object value)如果此映射将一个或多个键映射到指定值,则返回 true。 containsKey(Object key) 如果此映射包含指定键的映射关系,则返回true。 isEmpty() 如果此映射未包含键-值映射关系,则返回true。 4,获取。 get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回
null。 size() 返回此映射中的键-值映射关系数。 values() 返回此映射中包含的值的 Collection 视图。 entrySet() 返回此映射中包含的映射关系的Set 视图。 keySet() 返回此映射中包含的键的Set 视图。 map集合的两种取出方式: 1,Set<k> keySet:将map中所有的键存入到Set集合。因为set具备迭代器。所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。 2,Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry。Entry其实就是Map中的一个static内部接口。为什么要定义在内部呢?因为有了Map集合,有了键值对,才会有键值的映射关系。关系属于Map集合中的一个内部事物。而且该事物在直接访问Map集合中的元素。 Map与Collection Map与Collection在集合框架中属并列存在 Map存储的是键值对 Map存储元素使用put方法,Collection使用add方法 Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素 Map集合中键要保证唯一性 Collections:集合框架的工具类。里面定义的都是静态方法。 Collections和Collection有什么区别? Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。它有两个常用的子接口,List:对元素都有定义索引。有序的。可以重复元素。Set:不可以重复元素。无序。 Collections是集合框架中的一个工具类。该类中的方法都是静态的,提供的方法中有可以对list集合进行排序,二分查找等方法。通常常用的集合都是线程不安全的。因为要提高效率。如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。 3:System类(java.lang)
System类包含一些有用的类字段和方法。它不能被实例化。在
System类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。System:类中的方法和属性都是静态的。 out:标准输出,默认是控制台。 in:标准输入,默认是键盘。
相关文章推荐
- 黑马程序员_java1.5新特性泛型集合
- 黑马程序员——Java语言基础——06.集合框架(3)util包中的工具类和新特性
- 黑马程序员——Java基础---泛型、集合框架工具类:Collections和Arrays、JDK 1.5新特性
- 黑马程序员—Java学习笔记之集合框架(三)以及1.5新特性
- 黑马程序员——Java之集合框架工具类Collections、Arrays以及Java新特性
- 黑马程序员-Java 集合框架(二)-Map、Collections、新特性
- 黑马程序员________Java集合Map及其JDK1.5新特性泛型机制的学习笔记
- 黑马程序员_Java基础加强之JDK1.5的新特性
- Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
- JAVA 集合性能特性汇总
- 黑马程序员——java基础之数组与集合之间的点点滴滴
- Java 集合系列03之 ArrayList源码解析
- 黑马程序员:Java基础——List集合共性方法,Iterator迭代和集合具体对象的特点
- 黑马程序员——黑马学习日志之三 Java基础03
- 黑马程序员 java 集合框架
- 黑马程序员-Java基础总结03——Java基本语法(二)
- 黑马程序员--03.Java面向对象--03.【工具类】【静态代码块】
- 黑马程序员JAVA JDK1.5新特性
- 黑马程序员——Java基础--集合框架(1)
- 黑马程序员_Java基础:集合总结