JAVA提高第九篇 集合体系
在经过了前面的JDK6.0新特性的学习后,将进一步深入学习JDK,因为集合的重要性,因此从集合开始入手分析: 一、集合概况 Java是一种面向对象语言,如果我们要针对多个对象进行操作,那么首先必要将多个对象进行保存起来之后,然后才能操作,那么我们肯定会想到用数组来进行存放,但数组长度固定,不能满足变化的要求。所以,JAVA提供了集合。 数组与集合的区别: 数组:长度固定、可以存放基本类型/引用类型、数组中元素的类型必须一致 集合:长度可变自动扩容、只能存放引用类型、集合中元素类型可以不一致但一般保持一致 二、集合体系 集合作为一个容器,可以存储多个元素,但是由于数据结构的不同,java提供了多种集合类。将集合类中共性的功能,不断向上抽取,最终形成了集合体系结构。 数据结构:数据存储的方式 Java中集合类的关系图: 三、Collection【单值接口】 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。因为一些Collection允许存放相同的元素而另一些不行。一些能有序而另一些不行,于是衍生出两个子类接口List和Set。 Collection接口中常用方法: A:添加功能 List接口中常用方法: 首先我们知道List接口是Collection接口的子类,所以也具备上面的方法,但除了上面的方法外,List接口中典型的ArrayList底层是采用的数组结构,因此还具体被一些索引操作的方法,如下: List的特有功能 Set接口中常用方法: Set接口下的元素无序,不可以重复。其下面分为HashSet和TreeSet。 HashSet 底层数据结构是哈希表,线程不安全,效率高。 TreeSet 底层数据结构是二叉树,线程不安全,效率高。 四、迭代器(Iterator) 迭代器,从第一张JAVA集合类图关系中可以看出,除了中间的Collection外,置于最顶上的左边为迭代器Iterator. 1.使用步骤: 1、通过集合对象获取迭代器对象。 2.迭代器原理 由于多种集合的数据结构不同,所以存储方式不同,所以,取出方式也不同。那么这个时候,把判断和获取功能定义在了一个接口中,将来,遍历哪种集合的时候,只要该集合内部实现这个接口即可。【迭代器模式】 3.Collection存储字符串和自定义对象并通过迭代器遍历 Collection c = new ArrayList(); c.add("hello"); c.add("world"); c.add("java"); Iterator it = c.iterator(); while(it.hasNext()) { String s = (String)it.next(); System.out.println(s); } 4.ListIterator迭代器是Iterator的子接口 所以List的遍历方式共有三种1、Iterator迭代器2、ListIterator迭代器3、普通for+get() 五、Map<键值对接口> map是一个键值对形式的集合。它的元素都是有键和值组成。Map的键(key)是唯一的,值(value)可以重复。 Map接口中常用方法: A:添加功能 Map包括HashMap、HashTable和TreeMap。其中,HashTable已基本被HashMap取代, 新代码中基本不在使用HashTable Map的遍历方式: 1.键找值: public static void main(String[] args) { Map<String,Integer> map = new HashMap<String,Integer>(); map.put("二阳",23); map.put("二峥",24); map.put("二光",25); Set<String> keys=map.keySet(); //把键其中起来,存入到set集合中. for(String key:keys){ //遍历键集合,获取每一个键。增强for Integer value=map.get(key); //让键去找值 get(Object key) System.out.println(key+"***"+value); } } 2.键值对 public static void main(String[] args) { Map<String,存入到set集合中. for(String key:keys){ //遍历键集合,获取每一个键。增强for Integer value=map.get(key); //让键去找值 get(Object key) System.out.println(key+"***"+value); } } 通过上面的学习,让我们对集合的类图有了大体的认识,后面我们将会逐一深入我们最常用的比如:ArrayList HashMap等知识点的深入学习。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |