您的位置:首页 > 职场人生

黑马程序员-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:标准输入,默认是键盘。                  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  存储 框架