JavaAPI(集合框架)

JavaAPI(集合框架),第1张

JavaAPI
  • 集合框架
    • Java集合框架体系结构
    • List接口的实现类
      • ArrayList集合类
      • ArrayList常用方法
      • Collection接口常用通用方法
      • 断点跟踪ArrayList
      • LinkedList集合类
      • LinkedList独有的方法
      • LinkedList和ArrayList异同
    • Set接口
      • HashSet
      • 增强型的for
      • Iterator遍历Set
      • Iterator(迭代器)原理
    • 总结
    • Map
      • Map常用方法
      • 遍历Map集合元素(三种方法)
      • 遍历Map 思路一:遍历key(key是set),通过key—>value
      • 增强型for
      • 迭代器Iterator遍历key的集合(Set类型)
      • 遍历Map 思路二:获取Map中的所有键值对,然后再键值对中分别获取key和value
    • 泛型
    • Collections工具类
      • Collections算法类
      • Collections于Collection的不同
      • Collections常用静态方法
      • Collections自定义数据类型排序
    • Java集合框架总结
      • 两种集合类型
      • 一种迭代器
      • 工具类
      • 实现一个类的对象之间比较大小

集合框架 Java集合框架体系结构
  • Collection接口存储一组不唯一,无序的对象
  • List接口存储一组不唯一,有序(插入顺序)的对象
  • Set接口存储一组唯一,无序的对象
  • Map接口存储一组键值对象,提供key到value的映射(成对出现可以通过key找value,key是唯一的,无序的)

分为四大部分

​ 1、Clollection集合

​ 2、Map集合

​ 3、Inerator迭代器

​ 4、Utilities 工具类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SneislhR-1651212730847)(D:\note\Java高级特性\图片笔记\Java集合框架.jpg)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e1EssHBe-1651212730848)(D:\note\Java高级特性\图片笔记\ArrayList.jpg)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vQ1NXLQa-1651212730849)(D:\note\Java高级特性\图片笔记\LinkedList.jpg)]

ArrayList集合类
  • ArrayList
    1. 是List接口的一个具体实现类
    2. 实现了改变大小的数组
    3. 随机访问和遍历元素时,他提供更好的性能
  • 用到的方法
    1. add()
      • 返回Object类型
    2. size()
      • 和length属性作用是一样的
    3. get()
      • ​ 返回的也是Object类型
ArrayList常用方法
方法名说明
boolean add(Object o)在列表的末尾顺序添加元素,起始索引位置从0开始
void add(int index,Object)在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间
int size()返回列表中的元素个数
Object get(int index)返回值指定索引位置处的元素。去除的元素是Object类型,使用前需要进行强制类型转换
boolean contains(Object o)判断列表中是否存在指定元素
boolean remove(Objeact o)从列表中删除元素
Object remove(int index)从列表中删除指定位置元素,起始索引位置从0开始
Collection接口常用通用方法

使用子接口或子类

Collection接口常用通用方法
add()向集合有顺序的添加元素
size()返回元素个数
contains()判断是否存在这个元素
remove()删除元素
clear()集合里的所有元素清空
isEmpty()判断集合是否为空
itcrator()获取遍历一个集合的迭代器
toArray()把一个集合转换成一个序列
转为数组 Object[] toArray()(toArray()返回Object[]的数组)
断点跟踪ArrayList

随机访问和遍历元素时,它提供更好的性能(插入时的断点过程跟踪)

LinkedList集合类
  • LinkedList类是List接口的一个具体实现类
  • LinkedList类用于创建链表数据结构
  • 插入或者删除元素时,它提供更好的性能
LinkedList独有的方法
方法名说明
void addFirst(Object o)在列表的首部添加元素
void addLast(Object 0)在列表的末尾添加元素
Object getFirst()返回列表中的第一个元素
Object getLast()返回列表中的最后一个元素
Object removeFirst()删除并返回列表中的第一个元素
Object removeLast()删除并返回列表中的最后一个元素

ArrayList可以用父类引用指向子类对象的形式

LinkedList不可以用父类引用指向子类对象的形式

这种写法只能调用父子类公用的方法,无法调用子类独有的方法

LinkedList和ArrayList异同
同为List实现类,元素有序、不唯一、长度可变ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比价高
共有Collection及List的通用方法LinkedList采用链表存储方式,插入、删除元素时效率比
Set接口
  • Set接口存储一组唯一,无序的对象

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

  • Set中存放对象的引用

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

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

    HashSet
    • Set接口不存在get()方法,所以不能用get()方法来获取HashSet中的元素。
    增强型的for
for (Object obj:hashSet) {
    NewsTitle newsTitle = (NewsTitle) obj;
    System.out.println(newsTitle.getTitle()+newsTitle.getAuthor());
    //JavaAPI/demo03(原码)
}
Iterator遍历Set Iterator(迭代器)原理

判断下一个有没有元素,如果有元素就把他取出来,如果没有就不会继续往下

//获取迭代器对象
Iterator itor = hashSet.iterator();
//判断是否存在下一个元素
while (itor.hasNext()){
    //返回要访问的下一个元素
    NewsTitle newsTitle = (NewsTitle) itor.next();
    System.out.println(newsTitle.getTitle()+newsTitle.getAuthor());
}
  • 迭代器Iterator实现对集合的遍历
  • 通过Collection 接口的iterator()方法获取Iterator
  • 结合代码对比两种遍历Set的方式
总结
  • Collection、List、Set、Map接口的联系和区别
  • ArrayList和LinkedList的异同之处及各目的的应用场合
  • 遍历集合的方法
    1. 有序集合:普通for遍历索引、增强型for、迭代器Iterator
    2. 无序集合:增强型for、迭代器Iterator

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

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

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

Map

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

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

Map常用方法
put(Object key,Object value)向集合添加键值对,
get(Object key)通过key获取value,如果找不到则返回null
size()获取键值对的对数
containsKey(Object key)如果此映射包含指定键的映射,则返回 true
values()返回值的集合
entrySet()获取所有的key和value
containsKey(Object Key)如果此映射包含指定键的映射,则返回 true
remove(Object Key)删除由指定的键映射的“键-值对”
keySet()返回键的集合
遍历Map集合元素(三种方法)
  • 遍历key(Set:迭代器、增强型for),通过get(key)获取value
  • 遍历key-value对
    • map.Entryset()-Map.Entry
    • getKey()、getValue()
    • 注意数据类型转换
遍历Map 思路一:遍历key(key是set),通过key—>value 增强型for
    //创建集合对象,并将国家信息键值对放入集合
        Map countries = new HashMap();
        countries.put("China","中国");
        countries.put("USA","美国");
        countries.put("Japan","日本");
        countries.put("France","法国");
        
    Set keys = countries.keySet();//获取到Map集合中所有的key
        for (Object obj:keys) {
            String key = (String) obj;//获取到Map中的每一个key
            String value =(String) countries.get(key);//根据Map中每一个key去获取对应的value
            System.out.println(key+"--"+value);
        }
迭代器Iterator遍历key的集合(Set类型)
    //创建集合对象,并将国家信息键值对放入集合
        Map countries = new HashMap();
        countries.put("China","中国");
        countries.put("USA","美国");
        countries.put("Japan","日本");
        countries.put("France","法国");

    Iterator itor = keys.iterator();
        while (itor.hasNext()){
            String key = (String)itor.next();//获取到Map中每一个key
            String value =(String) countries.get(key);//根据Map中每一个key去获取对应的value
            System.out.println(key+"--"+value);

        }
遍历Map 思路二:获取Map中的所有键值对,然后再键值对中分别获取key和value
    //创建集合对象,并将国家信息键值对放入集合
        Map countries = new HashMap();
        countries.put("China","中国");
        countries.put("USA","美国");
        countries.put("Japan","日本");
        countries.put("France","法国");
        
  Set set = countries.entrySet();//获取Map中所有的键值对
        //遍历键值对的集合,把每个键值对拿出来(每一个键值对都是(obj)--Map.Entry类型)
        for (Object obj:set) {
            Map.Entry me = (Map.Entry) obj;
            String key =(String)me.getKey();//获取键值对中的键
            String value =(String) me.getValue();//获取键值对中的值
            System.out.println(key+"--"+value);
        }
泛型

泛型 约束了集合框架添加元素的安全性,错误类型的元素添加,在编译时不通过

添加泛型之后再遍历的时候不用强制类型转换(添加泛型指定的那个类型,返回的就一定是这个类型)

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

Collections工具类 Collections算法类

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

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

Collections于Collection的不同
Collection集合接口
Collections集合的 *** 作类
Collections常用静态方法
reverse()反转元素顺序
binarySearch()查找
sort()排序
max()/min()查找最大\最小值
Collections自定义数据类型排序

第一步:该类要实现Comparable接口

第二布:重写compareTo()方法

Java集合框架总结 两种集合类型
  • Collection 存储不唯一无序的数据
    • List 不唯一,有序的
    • Set 唯一,无序的
  • Map 如何存储数据,如何遍历,如何使用泛型(重点)
    • 键值对的形式(key,value)
    • 常用的实现类是
      • HashMap
      • TreeMap
一种迭代器
  • Iterator 集合通用遍历
工具类
  • Collections 工具类
  • Arrays
实现一个类的对象之间比较大小
  • 该类要实现Comparable接口
  • 重写compareTo()方法

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/789252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存