源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JAVA提高第九篇 集合体系

  • 时间:2020-02-12 11:17 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JAVA提高第九篇 集合体系
在经过了前面的JDK6.0新特性的学习后,将进一步深入学习JDK,因为集合的重要性,因此从集合开始入手分析: [b]一、集合概况[/b] Java是一种面向对象语言,如果我们要针对多个对象进行操作,那么首先必要将多个对象进行保存起来之后,然后才能操作,那么我们肯定会想到用数组来进行存放,但数组长度固定,不能满足变化的要求。所以,JAVA提供了集合。 数组与集合的区别: 数组:长度固定、可以存放基本类型/引用类型、数组中元素的类型必须一致 集合:长度可变自动扩容、只能存放引用类型、集合中元素类型可以不一致但一般保持一致 [b]二、集合体系[/b] 集合作为一个容器,可以存储多个元素,但是由于数据结构的不同,java提供了多种集合类。将集合类中共性的功能,不断向上抽取,最终形成了集合体系结构。 数据结构:数据存储的方式 Java中集合类的关系图: [img]http://files.jb51.net/file_images/article/201710/2017103184821932.jpg?201793184838[/img] [img]http://files.jb51.net/file_images/article/201710/201710310842272.png[/img] [b]三、Collection[/b]【单值接口】 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。因为一些Collection允许存放相同的元素而另一些不行。一些能有序而另一些不行,于是衍生出两个子类接口List和Set。 [img]http://files.jb51.net/file_images/article/201710/201710310842273.png[/img] [b]Collection接口中常用方法:[/b] A:添加功能 boolean add(Object obj):向集合中添加一个元素 boolean addAll(Collection c):向集合中添加一个集合的元素。 B:删除功能 void clear():删除集合中的所有元素。 boolean remove(Object obj):从集合中删除指定的元素 boolean removeAll(Collection c):从集合中删除一个指定的集合元素。 C:判断功能 boolean isEmpty():判断集合是否为空。 boolean contains(Object obj):判断集合中是否存在指定的元素。 boolean containsAll(Collection c):判断集合中是否存在指定的一个集合中的元素。 D:遍历功能 Iterator iterator():就是用来获取集合中每一个元素。 E:长度功能 int size():获取集合中的元素个数 F:交集功能 boolean retainAll(Collection c):判断两个集合中是否有相同的元素。 G:把集合转换成数组 Object[] toArray():把集合变成数组。 [b]List接口中常用方法:[/b] 首先我们知道List接口是Collection接口的子类,所以也具备上面的方法,但除了上面的方法外,List接口中典型的ArrayList底层是采用的数组结构,因此还具体被一些索引操作的方法,如下: List的特有功能 A:添加功能 void add(int index, Object obj):在指定位置添加元素 B:删除功能 Object remove(int index):根据指定索引删除元素,并把删除的元素返回。 C:修改功能 Object set(int index, Object obj):把指定索引位置的元素修改为指定的值,返回修改前的值。 D:获取功能 int indexOf(Object o):返回指定元素在集合中第一次出现的索引 Object get(int index):获取指定位置的元素 ListIterator listIterator():列表迭代器 E:截取功能 List subList(int fromIndex, int toIndex):截取集合。 [b]Set接口中常用方法:[/b] Set接口下的元素无序,不可以重复。其下面分为HashSet和TreeSet。 [b]HashSet [/b] 底层数据结构是哈希表,线程不安全,效率高。 保证唯一性依赖两个方法:hashCode()和equals()。 顺序: 判断hashCode()值是否相同。 相同:继续走equals(),看返回值 如果true:就不添加到集合。 如果false:就添加到集合。 不同:就添加到集合。 [b]TreeSet [/b] 底层数据结构是二叉树,线程不安全,效率高。 保证元素唯一性的方法时根据返回值是否是0。 保证排序的两种方式: 自然排序(元素具备比较性):实现Comparable接口 比较器排序(集合具备比较性):实现Comparator接口 [b]四、迭代器(Iterator)[/b] 迭代器,从第一张JAVA集合类图关系中可以看出,除了中间的Collection外,置于最顶上的左边为迭代器Iterator. [b]1.使用步骤:[/b] 1、通过集合对象获取迭代器对象。 2、通过迭代器对象判断。 3、通过迭代器对象获取。 [b]2.迭代器原理[/b] 由于多种集合的数据结构不同,所以存储方式不同,所以,取出方式也不同。那么这个时候,把判断和获取功能定义在了一个接口中,将来,遍历哪种集合的时候,只要该集合内部实现这个接口即可。【迭代器模式】 [b]3.Collection存储字符串和自定义对象并通过迭代器遍历[/b]
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); 
}
[b]4.ListIterator迭代器是Iterator的子接口[/b] 所以List的遍历方式共有三种1、Iterator迭代器2、ListIterator迭代器3、普通for+get() [b]五、Map<键值对接口>[/b] map是一个键值对形式的集合。它的元素都是有键和值组成。Map的键(key)是唯一的,值(value)可以重复。 [img]http://files.jb51.net/file_images/article/201710/201710310842274.png[/img] Map接口中常用方法: A:添加功能 V put(K key ,V value) :当key在集合中不存在是,添加元素;当key存在时替换元素 B:判断功能 boolean containsKey (Object key) :判断指定的键是否在集合中存在 Boolean containsValue(Object value):判断指定的值是否在集合中存在 Boolean isEmpty() :判断集合是否为空 C:删除功能 Void clear():清除所有键值对数据 D:获取功能 Object get (Object key) :根据键获取值 Set<K> keyset(): 所有键的集合 Collection<V>values() :所有值的集合 Set<Map.Entry<K,V>> entrySet() :返回此映射中包含的映射关系的 Set 视图 E:长度功能 Int size() Map包括HashMap、HashTable和TreeMap。其中,HashTable已基本被HashMap取代, 新代码中基本不在使用HashTable (注:HashMap支持null , HashTable不支持null ) [b]Map的遍历方式:[/b] 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,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); 
  } 
} 
通过上面的学习,让我们对集合的类图有了大体的认识,后面我们将会逐一深入我们最常用的比如:ArrayList HashMap等知识点的深入学习。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部