JavaSE基础知识分享(七)

写在前面

前面讲的是面向对象中的常用类部分,下面让我们来看看java中集合这部分的内容!在本文的最后给大家发一个题目,便于复习Java面向对象部分的知识!

集合

数据结构

  • 栈和队列

  • 数组和链表


  • 哈希表


  • 本部分知识太多,就不一一列举了。
    了解更多

泛型

  • 泛型类
    格式:public class 类名<泛型类型1,…>
    注意:泛型类型必须是引用类型。

  • 泛型方法
    格式:public <泛型类型> 返回类型 方法名(泛型类型 参数)

  • 泛型接口
    格式:public interface 接口名<泛型类型1,…>

  • 泛型通配符 <?>

    • <?> 任意类型,若没有明确,就是 Object 及任意 Java 类。
    • <? extends E> 向下限定,E 及其子类。
    • <? super E> 向上限定,E 及其父类。

两大继承体系

Collection 接口

  • 成员方法

  • boolean add(E e)

    • 作用:将指定的元素 e 添加到集合中。如果集合中尚不存在该元素,成功添加返回 true;如果集合中已经存在该元素,则返回 false
    • 返回值true 如果元素成功添加,false 如果元素已存在。
  • boolean remove(Object o)

    • 作用:从集合中移除指定的元素 o。如果集合中存在该元素,移除成功返回 true;如果集合中不存在该元素,则返回 false
    • 返回值true 如果元素成功移除,false 如果元素不存在。
  • void clear()

    • 作用:移除集合中的所有元素,使集合变为空。
    • 返回值:无返回值。
  • boolean contains(Object o)

    • 作用:检查集合是否包含指定的元素 o。如果集合中存在该元素,则返回 true;否则返回 false
    • 返回值true 如果集合包含指定的元素;false 如果集合不包含该元素。
  • boolean isEmpty()

    • 作用:检查集合是否为空。如果集合中没有任何元素,则返回 true;否则返回 false
    • 返回值true 如果集合为空;false 如果集合包含元素。
  • int size()

    • 作用:返回集合中元素的数量。
    • 返回值:集合中元素的数量(一个整数)。
  • Object[] toArray()

    • 作用:返回包含集合中所有元素的数组。数组的类型为 Object[]
    • 返回值:包含集合中所有元素的数组。
  • <T> T[] toArray(T[] a)

    • 作用:返回包含集合中所有元素的数组。如果提供的数组 a 足够大,元素将被存储在该数组中;否则,创建一个新的数组来存储元素。
    • 返回值:包含集合中所有元素的数组。如果提供的数组 a 足够大,则返回 a;否则返回新创建的数组。
  • Iterator<E> iterator()

    • 作用:返回集合中元素的迭代器,可以通过迭代器遍历集合中的元素。
    • 返回值:集合中元素的 Iterator
  • boolean containsAll(Collection<?> c)

    • 作用:检查集合是否包含指定集合 c 中的所有元素。如果集合中包含 c 中的所有元素,则返回 true;否则返回 false
    • 返回值true 如果集合包含所有 c 中的元素;false 如果不包含。
  • boolean addAll(Collection<? extends E> c)

    • 作用:将指定集合 c 中的所有元素添加到当前集合中。如果当前集合由于添加而发生了变化,则返回 true;否则返回 false
    • 返回值true 如果集合发生变化;false 如果集合未发生变化。
  • boolean removeAll(Collection<?> c)

    • 作用:从当前集合中移除指定集合 c 中的所有元素。如果当前集合由于移除而发生了变化,则返回 true;否则返回 false
    • 返回值true 如果集合发生变化;false 如果集合未发生变化。
  • boolean retainAll(Collection<?> c)

    • 作用:保留当前集合中与指定集合 c 中的元素相同的元素,移除所有其他元素。如果当前集合由于移除而发生了变化,则返回 true;否则返回 false
    • 返回值true 如果集合发生变化;false 如果集合未发生变化。
  • 子接口

    • List 接口

      • 特点:元素有序且可以重复,有索引下标。
      • 子类
        • ArrayList

          • 底层数据结构:数组
          • 优点:查询快
          • 缺点:增删慢,线程不安全
          • 线程安全实现:使用泛型和 synchronized 关键字修饰类。
        • Vector

          • 底层数据结构:数组
          • 优点:线程安全
          • 缺点:效率低
        • LinkedList

          • 底层数据结构:双链表
          • 优点:增删快
          • 缺点:查询慢,线程不安全
    • Set 接口

      • 特点:元素唯一且无序。
      • 子类
        • HashSet

          • 底层数据结构:哈希表
          • 元素唯一性:通过 hashCode()equals() 实现。
        • LinkedHashSet

          • 底层数据结构:哈希表和双链表
          • 优点:哈希表保证元素唯一性,双链表保证元素有序。
        • TreeSet

          • 底层数据结构:红黑树
          • 排序方式:
            • 自然排序:元素类实现 Comparable<元素类> 接口并重写 compareTo 方法。
            • 比较器排序:使用实现了 Comparator 接口且重写 compare 方法的对象进行排序。
  • 遍历方式

    • 方式一:使用迭代器,利用 hasNext()next() 方法。
    • 方式二:使用 for 循环,利用集合的 size() 方法和 get(索引值)
    • 方式三:将集合转成数组,通过数组的 length 属性进行遍历。

Map 接口

  • 成员方法

  • V put(K key, V value)

    • 作用:将指定的键 key 和对应的值 value 存入映射中。如果映射中已经存在该键,则用新值替换旧值,并返回旧值;如果映射中没有该键,则添加新键值对并返回 null
    • 返回值:旧值(如果键已存在),否则 null
  • V remove(Object key)

    • 作用:从映射中移除指定的键 key 及其对应的值。如果键存在,则将其对应的值移除并返回;如果键不存在,则返回 null
    • 返回值:被移除的值(如果键存在),否则 null
  • void clear()

    • 作用:移除映射中的所有键值对,使映射变为空。
    • 返回值:无返回值。
  • boolean containsKey(Object key)

    • 作用:检查映射是否包含指定的键 key。如果映射中存在该键,则返回 true;否则返回 false
    • 返回值true 如果映射包含指定的键;false 如果映射不包含该键。
  • boolean containsValue(Object value)

    • 作用:检查映射是否包含指定的值 value。如果映射中存在该值,则返回 true;否则返回 false
    • 返回值true 如果映射包含指定的值;false 如果映射不包含该值。
  • boolean isEmpty()

    • 作用:检查映射是否为空。如果映射中没有任何键值对,则返回 true;否则返回 false
    • 返回值true 如果映射为空;false 如果映射包含键值对。
  • int size()

    • 作用:返回映射中键值对的数量。
    • 返回值:映射中键值对的数量(一个整数)。
  • V get(Object key)

    • 作用:获取指定键 key 对应的值。如果映射中存在该键,则返回其对应的值;如果键不存在,则返回 null
    • 返回值:指定键对应的值(如果键存在),否则 null
  • Set<K> keySet()

    • 作用:返回映射中所有键的集合(Set)。可以通过这个集合遍历所有的键。
    • 返回值:包含映射中所有键的 Set
  • Collection<V> values()

    • 作用:返回映射中所有值的集合(Collection)。可以通过这个集合遍历所有的值。
    • 返回值:包含映射中所有值的 Collection
  • Set<Map.Entry<K, V>> entrySet()

    • 作用:返回映射中所有键值对的集合(Set)。每个键值对都表示为 Map.Entry 对象,方便进行遍历和操作。
    • 返回值:包含映射中所有键值对的 Set。每个键值对是 Map.Entry<K, V> 对象。
  • 遍历方式

    • 方式一:获取所有键的集合,遍历键集合,根据键获取值。
    • 方式二:获取所有键值对对象的集合,遍历集合,根据键值对对象获取键和值。
  • 子类

    • HashMap

      • 底层数据结构:哈希表
    • LinkedHashMap

      • 底层数据结构:哈希表和链表
    • TreeMap

      • 底层数据结构:红黑树

面向对象的复习题

1.一个类的4.0写法:

创建一个`Person`类,包含`name`、`age`和`gender`三个私有字段。编写一个构造方法,用于初始化这些字段,外界要能读写每个字段,并提供一个公共的`toString`方法,用于打印`Person`对象的详细信息。

2.封装与访问控制:

修改`Person`类,使其`age`字段只能被增加,不能被减少。为此,你需要提供一个公共的`increaseAge`方法,并在该方法中增加`age`字段的值。在`Person`类中添加一个私有方法,用于验证`age`字段的值是否合法(例如,年龄不能为负数)。在构造方法和`increaseAge`方法中调用该方法以确保对象状态的有效性。

3.继承:

创建一个`Student`类,继承自`Person`类。在`Student`类中添加一个`studentId`字段和一个`getStudentId`方法。在`Student`类中重写`toString`方法,使其同时打印`Person`类的字段和`studentId`字段。

4.多态:

在`Person`类中添加一个名为`speak`的抽象方法,该方法返回一个字符串,表示人物的说话内容。创建`Teacher`和`Student`两个类,分别继承自`Person`类,并实现`speak`方法。在`Teacher`类中,`speak`方法返回一条教育性的消息;在`Student`类中,`speak`方法返回一条学习的消息。编写一个`School`类,其中包含一个`Person`类型的数组。在`School`类中添加一个方法,该方法接收一个索引值,并调用数组中对应索引位置对象的`speak`方法,打印出说话内容。在`Person`类中写一个方法,表示该老师在备课。

5.接口:

实现一个抽烟接口,给`Teacher`类加一个抽烟功能,写一个`smoking`方法内容是xxx正在吸烟,无返回值,并在4的基础上实现该接口来调用该方法。

效果展示:



热门相关:恶魔总裁霸道宠:老婆,太惹火   我的女友是丧尸   嫡女谋:逆天三小姐   人族镇守使   伏天剑尊