首页 > 基础资料 博客日记
JavaSE基础知识分享(七)
2024-08-15 22:00:04基础资料围观489次
写在前面
前面讲的是面向对象中的常用类部分,下面让我们来看看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的基础上实现该接口来调用该方法。
效果展示:






本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:

