JAVA高级编程之集合框架和泛型(超详细)

Java集合框架包含的内容

Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中

  • Collection 接口存储一组不唯一,无序的对象

  • List 接口存储一组不唯一,有序(插入顺序)的对象

  • Set 接口存储一组唯一,无序的对象

  • Map接口存储一组键值对象,提供key到value的映射

List接口的实现类

ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高

LinkedList采用链表存储方式,插入、删除元素时效率比较高

ArrayList集合类

确定存储方式

  • ArrayList类是List接口的一个具体实现类

  • ArrayList对象实现了可变大小的数组

  • 随机访问和遍历元素时,它提供更好的性能

确定存储对象

  • 创建类型:新闻标题

  • 包含属性: ID、名称、创建者

具体实现

……

ArrayList常用方法

方法名 说明
boolean add(Object o) 在列表的末尾顺序添加元素,起始索引位置从0开始
void add(int index,Object o) 在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间
int size() 返回列表中的元素个数
Object get(int index) 返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换
boolean contains(Object o) 判断列表中是否存在指定元素
boolean remove(Object o) 从列表中删除元素
Object remove(int index) 从列表中删除指定位置元素,起始索引位置从0开始

Collection接口常用通用方法还有:clear()、isEmpty()、iterator()、toArray()

LinkedList集合类

确定存储方式

  • LinkedList类是List接口的一个具体实现类

  • LinkedList 类用于创建链表数据结构

  • 插入或者删除元素时,它提供更好的性能

具体实现

……

LinkedList常用方法

方法名 说明
void addFirst(Object o) 在列表的首部添加元素
void addLast(Object o) 在列表的末尾添加元素
Object getFirst() 返回列表中的第一个元素
Object getLast() 返回列表中的最后一个元素
Object removeFirst() 删除并返回列表中的第一个元素
Object removeLast() 删除并返回列表中的最后一个元素

Set接口

  • Set接口存储一组唯一,无序的对象

  • HashSet是Set接口常用的实现类

  • Set中存放对象的引用

Set接口采用对象的equals()方法比较两个对象是否相等

HashSet是Set接口常用的实现类

Set接口不存在get()方法

如何遍历Set集合

方法1:通过迭代器Iterator实现遍历

  • 获取Iterator :Collection 接口的iterator()方法

Iterator的方法

  • boolean hasNext(): 判断是否存在另一个可访问的元素

  • Object next(): 返回要访问的下一个元素

 
Set set = new HashSet();
              ......
 Iterator iterator = set.iterator();
         while (iterator.hasNext()){
             System.out.println(iterator.next());
         }

方法2:增强型for循环

 Set set = new HashSet();
              ......
 for (int value:set){
             System.out.println(value);
         }

Map接口

Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作

  • 最常用的实现类是HashMap

Map接口常用方法

方法名 说明
Object put(Object key, Object val) 以“键-值”对的方式进行存储
Object get(Object key) 根据键返回相关联的值,如果不存在指定的键,返回null
Object remove(Object key) 删除由指定的键映射的“键-值对”
int size() 返回元素个数
Set keySet() 返回键的集合
Collection values() 返回值的集合
boolean containsKey(Object key) 如果存在由指定的键映射的“键-值对”,返回true

遍历Map集合

方法1:通过迭代器Iterator实现遍历

 Iterator iterator = map.keySet().iterator();
         while (iterator.hasNext()){
             int key = (int)iterator.next();
             String value = map.get(key);
             System.out.println(key+value);
         }

方法2:keySet增强for循环

 for (int key:map.keySet()){
             String value = map.get(key);
             System.out.println(key+value);
         }

方法3:EntrySet键值对增强for循环

 for (Map.Entry entry:map.entrySet()){
             int key = entry.getKey();
             String value = entry.getValue();
             System.out.println(key+value);
         }

泛型集合

泛型

将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性

  • 本质是参数化类型

泛型集合

  • 泛型集合可以约束集合内的元素类型

  • 典型泛型集合ArrayList、HashMap(表示该泛型集合中的元素类型泛型集合中的数据不再转换为Object)

除了指定了集合中的元素类型外,泛型集合和之前学习的集合的用法完全一样

Collections算法类

  • Java集合框架将针对不同数据结构算法的实现都保存在工具类中

  • Collections类定义了一系列用于操作集合的静态方法

Collections和Collection不同,前者是集合的操作类,后者是集合接口

Collections提供的常用静态方法

  • sort():排序

  • max()\min():查找最大\最小值

Collections排序

  • Collections类可以对集合进行排序、查找和替换操作

  • 实现一个类的对象之间比较大小,该类要实现Comparable接口,重写compareTo()方法

你可能感兴趣的:(开发语言,java,eclipse,idea,青少年编程)