欢迎光临散文网 会员登陆 & 注册

Java编程知识-Collections集合继承结构

2018-11-09 15:35 作者:动力节点  | 我要投稿

  面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。


  数组虽然也可以存储对象,但长度是固定的;集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。


  集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。


  集合框架图

 

 Collection(集合的最大接口)继承关系


  ——List可以存放重复的内容


  ——Set不能存放重复的内容,所以的重复内容靠hashCode()和equals()两个方法区分


  ——Queue队列接口


  ——SortedSet可以对集合中的数据进行排序


  Collection定义了集合框架的共性功能。


  1,添加


  add(e);


  addAll(collection);


  2,删除


  remove(e);


  removeAll(collection);


  clear();


  3,判断。


  contains(e);


  isEmpty();


  4,获取


  iterator();


  size();


  5,获取交集。


  retainAll();


  6,集合变数组。


  toArray();


  *add方法的参数类型是Object。以便于接收任意类型对象。


  *集合中存储的都是对象的引用(地址)


  List的常用子类


  List:


  特有方法。凡是可以操作角标的方法都是该体系特有的方法。


  增


  add(index,element);


  addAll(index,Collection);


  删


  remove(index);


  改


  set(index,element);


  查


  get(index):


  subList(from,to);


  listIterator();


  intindexOf(obj):获取指定元素的位置。


  ListIteratorlistIterator();


  ——ArrayList线程不安全,查询速度快


  ——Vector线程安全,但速度慢,已被ArrayList替代


  ——LinkedList链表结果,增删速度快


  Set接口


  Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。


  |——HashSet:底层数据结构是哈希表。是线程不安全的。不同步。


  HashSet是如何保证元素唯一性的呢?


  是通过元素的两个方法,hashCode和equals来完成。


  如果元素的HashCode值相同,才会判断equals是否为true。


  如果元素的hashcode值不同,不会调用equals。


  注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。


  ——TreeSet:


  有序的存放:TreeSet线程不安全,可以对Set集合中的元素进行排序


  通过compareTo或者compare方法来保证元素的唯一性,元素以二叉树的形式存放。


  集合的输出


  4种常见的输出方式


  ——Iterator:迭代输出,使用最多的输出方式


  ——ListIterator:Iterator的子接口,专门用于输出List中的内容


  ——Enumeration


  ——foreach


  在迭代时,不可以通过集合对象的方法操作集合中的元素。


  因为会发生ConcurrentModificationException异常。


  所以,在迭代器时,只能用迭代器的放过操作元素,可是Iterator方法是有限的,


  只能对元素进行判断,取出,删除的操作,


  如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。


  该接口只能通过List集合的listIterator方法获取。


  Map接口


  Correction、Set、List接口都属于单值的操作,而Map中的每个元素都使用key——>value的形式存储在集合中。


  Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。


  1,添加。


  put(Kkey,Vvalue)


  putAll(Map<?extendsK,?extendsV>m)


  2,删除。


  clear()


  remove(Objectkey)


  3,判断。


  containsValue(Objectvalue)


  containsKey(Objectkey)


  isEmpty()


  4,获取。


  get(Objectkey)


  size()


  values()


  entrySet()


  keySet()


  8、Map接口的常用子类


  Map


  |HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。


  |--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。


  集合工具类


  Collections:集合框架的工具类。里面定义的都是静态方法。


  Collections和Collection有什么区别?


  Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。


  它有两个常用的子接口,


  List:对元素都有定义索引。有序的。可以重复元素。


  Set:不可以重复元素。无序。


  Collections是集合框架中的一个工具类。该类中的方法都是静态的


  提供的方法中有可以对list集合进行排序,二分查找等方法。


  通常常用的集合都是线程不安全的。因为要提高效率。


  如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。

       关注“动力节点Java学院”微信公众号,更多Java基础知识等你来获取。


Java编程知识-Collections集合继承结构的评论 (共 条)

分享到微博请遵守国家法律