Java 高级编程 第一章、集合框架和泛型

Java 集合框架

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

Collection 接口

        Collection 接口存储一组不唯一,无序的对象,提供了对集合进行排序、遍历等多种算法实现

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

List 接口

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

List 接口的实现类

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

ArrayList 与 LinkedList 的区别

        ArrayList:内部使用数组实现,遍历查询效率高

        LinkedList:内部使用双向链表实现,增删改效率高

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开始

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

LinkedList 集合类

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

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

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

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

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

Set 接口的实现类

        HashSet 是 Set 接口常用的实现类

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

        注意:set接口不存在下标和 get() 方法

实现遍历 Set 集合

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

                Collection 接口的 iterator() 方法创建 terator 对象

                Iterator 的对象方法

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

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

//使用迭代器循环打印汽车信息。
	System.out.println("迭代器循环打印汽车信息:");
    Iterator iterator = cars.iterator(); //使用迭代器
	//循环迭代器 hasNext() 判断是否存在下一个元素
    while (iterator.hasNext()){ 
    	System.out.println(iterator.next());
     }

        方法2:增强型for循环

Map 接口

        Map接口存储一组键值对象,提供key到value的映射,最常用的实现类是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实现遍历

        方法2:增强型for循环

        方法3:键值对

泛型集合

泛型集合可以约束集合内的元素类型,典型泛型集合ArrayList<E>、HashMap<K,V>

        其中<E>、<K,V>表示该泛型集合中的元素类型

        泛型集合中的数据不再转换为Object

解决强制类型转换时容易出现的异常问题

        List的get(int index)方法获取元素

        Map的get(Object key)方法获取元素

        Iterator的next()方法获取元素

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

传递的数据类型必须是引用数据类型
    //int = Integer
    //double = Double
    //long = Long
    //float = Float
    
List<Students> students = new ArrayList<>(); 
Set<Double> sets = new HashSet<>();
Map<Integer, String> map = new HashMap<>();
Collections 算法类

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

Collections 类常用方法

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

        Collections 提供的常用静态方法

                sort():排序

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

Collections 排序

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

        实现一个类的对象之间比较大小,该类要实现Comparable接口

                重写compareTo()方法

public class Students implements Comparable<Students> {
    private String name;
    private float score;
    private int age;
    
@Override
    public int compareTo(Students other) {
        // 成绩降序排列
        int scoreCompare = Float.compare(other.score, this.score);
        if (scoreCompare != 0) {
            return scoreCompare;
        }
        // 成绩相同的情况下按年龄升序排列
        return Integer.compare(this.age, other.age);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值