集合和异常

集合的概念

存储一组数据类型相同的引用数据类型的数据

1,只能存储引用数据类型,不能直接存储基本数据类型。但可以使用对应的包装类将基本数据类型包装成对象,然后将对象添加到集合中。这样可以实现在集合中存储基本数据类型的值。

2,长度可变

Collection

集合体系

List:有序的,有下标的,元素可重复

Set:无序的,无下标的,元素不可重复 

  List:

Collection接口的子接口,表示有序的列表集合。List接口的实现类有ArrayList、LinkedList和Vector等。
 

        ArrayList:

List接口的一个常用的实现类。它基于数组结构实现,JDK 1.2版本引入。ArrayList是线程不安全的,在多线程环境下需要进行额外的同步处理。

            优点是查询效率高,

            缺点是增删元素的效率相对较低。
        

        Vector:

也是List接口的一个实现类,使用了和ArrayList类似的基于数组的结构。与ArrayList不同的是,Vector是线程安全的,
            优点:查询效率高
            缺点:增删效率慢
        

        LinkedList:

是List接口的另一个实现类,基于链表结构
            优点:增删效率高
            缺点:查询效率低
    

        Set:

Set是Collection接口的另一个子接口,表示无序的集合,不允许包含重复元素。Set接口的实现类有HashSet、LinkedHashSet和TreeSet等。
        

        HashSet:

Set接口的一个常用实现类,它基于哈希表实现。它可以快速地进行插入、删除和查找操作,并且不保证元素的顺序。
      

          LinkedHashSet

是HashSet的一个子类,具有HashSet的所有特性,并且维护了元素的插入顺序。因此,遍历LinkedHashSet时会按照插入顺序输出元素。
        

        TreeSet

是Set接口的另一个实现类,它基于红黑树(一种自平衡二叉搜索树)实现。TreeSet中的元素是有序的,并且支持快速的插入、删除和查找操作。

Collection提供的方法

boolean add(E e);
作用:添加
参数:
    e:本次添加的数据
返回值:
    是否添加成功
    
boolean addAll(Collection<? extends E> c);
作用:添加一个集合的数据
参数:
    e:添加的集合
返回值:
    是否添加成功
    
void clear();
作用:清空

boolean remove(Object o);
作用:删除一个数据
参数:
    o:被删除的数据
返回值:
    是否删除成功
    
boolean removeAll(Collection<?> c);
作用:删除一组数据
参数:
    c:删除的数据集合
返回值:
    是否删除成功
注意:
    当集合中有多个相同的数据,同时都会被删除
    
boolean contains(Object o);
作用:判断指定的元素在集合中是否存在
参数:
    o:指定的元素
返回值:
    是否存在

boolean containsAll(Collection<?> c);
作用:判断指定的集合中的元素在集合中是否全部存在
参数
    c:指定的集合
返回值:
    是否全部存在
    
boolean isEmpty();
作用:判断集合是否为空集合
返回值:
    true表示空集合,false表示非空
    空集合:集合中没有元素
    集合为空:没有创建,Collection c = null;

int size();
作用:获取集合的长度
返回值:
    集合的长度
    
Iterator<E> iterator();
作用:获取迭代器
返回值
    迭代器
    Iterator提供的方法
        boolean hasNext();
        作用:判断下一个是否有值
        返回值:true,有值,false,没值
        
        E next();
        作用:移动游标,并获取其指向的值
        返回值:获取到的数据
        
Object[] toArray();
作用:将集合转换为数组
返回值:
    转换后的数组

List提供的方法

void add(int index, E element);
作用:
    在指定位置添加数据
参数:
    index:指定的位置
    element:添加的数据

boolean addAll(int index, Collection<? extends E> c);
作用:
    给指定的位置添加一个集合的数据
参数:
    index:指定的位置
    c:添加的集合
返回值:
    是否添加成功

E remove(int index);
作用:
    删除指定位置的元素
参数:
    index:指定的位置
    
E set(int index, E element);
作用:
    修改指定位置的元素
参数:
    index:下标
    element:修改后的元素
返回值:
    修改前的元素
    
E get(int index);
作用:
    获取集合中指定位置的元素
参数:
    指定的位置
返回值:
    该位置上的元素
    
int indexOf(Object o);
作用:
    获取指定元素在集合中第一次出现的位置
参数:
    o:指定的元素
返回值:
    元素在集合中第一次出现的位置
    如果返回值为-1表示数据不存在

int lastIndexOf(Object o);
作用:
    获取指定元素在集合中最后一次出现的位置
参数:
    o:指定的元素
返回值:
    元素在集合中最后一次出现的位置
    如果返回值为-1表示数据不存在

List<E> subList(int fromIndex, int toIndex);
作用:
    截取
参数:
    fromIndex:开始位置,包含
    toIndex:结束位置,不包含
返回值:
    截取到的元素集合

Map

字典

以键值对应的方式存储一组数据类型相同的引用数据类型的数据

键:key
值:value

注意:一个键对应只一个值,所以键不能重复

  HashMap


        特点:JDK1.2,线程不安全,允许空键空值
        如何判断键是否重复
        1,先使用存储的键值对的键的hashcode值与已经在字典中的其他键的hashcode进行比较
        2,如果hashcode值不相同,直接存储,如果hashcode与字典中其他键值对的键的hashcode值相同,那么在使用equals方法进行比较
        3,如果equals不相同,认为不相同,直接存储,如果equals方法相同,则认为相同
     

 HashTable


        特点:JDK1.0,线程安全,不允许null做为键或值
        如何判断键是否重复
        1,先使用存储的键值对的键的hashcode值与已经在字典中的其他键的hashcode进行比较
        2,如果hashcode值不相同,直接存储,如果hashcode与字典中其他键值对的键的hashcode值相同,那么在使用equals方法进行比较
        3,如果equals不相同,认为不相同,直接存储,如果equals方法相同,则认为相同
        


    TreeMap


        特点:key要么拥有比较性,要么创建TreeMap指定key的比较器
        
    Properties

       Map提供的方法


    V put(K key, V value);
    作用:给字典中添加一个键值对
    
    void putAll(Map<? extends K, ? extends V> m);

    boolean remove(Object key)
    boolean remove(Object key, Object value)
    void clear();

    V put(K key, V value);
    作用:当字典中存在该key时,就是修改
    返回值:修改前键对应的值

    int size();
    作用:查询字典中键值对的个数
    
    boolean isEmpty();返回HashMap是否为空,如果HashMap中没有任何元素,则返回true。
    
    boolean containsKey(Object key);判断HashMap中是否包含指定键,如果包含则返回true,否则返回false。
    
    boolean containsValue(Object value);判断HashMap中是否包含指定值,如果包含则返回true,否则返回false。
    
    Set<Map.Entry<K, V>> entrySet();
    作用:将字典转换为set集合,set中的一个元素就是一个键值对(Entry)
        Entry类提供的方法
            getKey
            getValue
            setValue(V value);
            
    Set<K> keySet();
    作用:将字典中的键以set形式输出
    
    Collection<V> values();
    作用:将字典中的值以Collection形式输出
    
    V get(Object key);
    作用:通过key获取value
    参数:key:键
    返回值:对应的value

Collections

作用:集合操作工具类型

常用方法

public static <T> boolean addAll(Collection<? super T> c, T... elements)

public static <T extends Comparable<? super T>> void sort(List<T> list)

public static void reverse(List<?> list)

异常
异常的概念

因为硬件或编写程序考虑不足,导致的程序闪退,称为异常

异常的分类

Throwable
    Error(错误)
        出现的原因:因为硬件问题导致的程序产生了异常
        处理方案:不管
    Exception(异常)
        RuntimeException:运行时异常
            出现的原因:因为程序员编写代码时考虑不足,引起的
            处理方案:通过代码使程序可以正常结束
        CheckedException:检查时异常
            出现的引用:因编写代码时语法不符合规范,导致的
            处理方案:按照语法规范编写代码

异常的产生

可以是由于程序错误、资源不足、非法操作等引起的。当发生异常时,程序会抛出对应的异常对象,通常包含了异常的类型、原因和堆栈信息。

异常的传递

在A调用调用B,B中调用C,....C中出现了异常会导致A也出现异常,如果中途没有处理,那么将会把异常传递给JVM,JVM对异常的处理方案就是让程序闪退

常见的异常

OutOfMemoryError
    内存溢出错误,可以通过代码进行优化改进
InputMismatchException
    输出异常
ArithmeticException
    算法异常
ArrayIndexOutOfBoundsException
    数组下标越界异常
NullPointerException
    空指针异常
    调用属性或方法的对象为null

异常的处理

方案一:try-catch-finally

try{
    可能会存在异常的代码
}catch(异常类型1 变量名1){
    异常类型1的异常处理的代码
}catch(异常类型2 变量名2){
    异常类型2的异常处理的代码
}
...
catch(异常类型n 变量名3){
    异常类型n的异常处理的代码
}finally{
    必须要执行的代码,可有可无
}

方案二:异常声明throws

访问权限修饰符 修饰符 返回值类型 方法名(形参列表) throws 异常类型1,异常类型2,...{

}

方案三:抛出异常

throw 异常对象;

自定义异常

步骤

1,创建一个类
2,使其继承与Exception或Exception子类
3,重写构造函数调用父类构造函数
    有参构造函数中的参数是异常信息

使用

使用throw抛出自定义异常的对象 

列: 

// 自定义异常类
class CustomException extends Exception {
    public CustomException(String message) {
        super(message);
    }
}

// 使用自定义异常
public class Main {
    public static void main(String[] args) {
        try {
            // 抛出自定义异常
            throw new CustomException("This is a custom exception.");
        } catch (CustomException e) {
            // 捕获并处理自定义异常
            System.out.println("Caught custom exception: " + e.getMessage());
        }
    }
}
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值