java基础知识点10(Collection,增强for,泛型,数据结构)

 

1.1 Collection的接口体系

 

1.2 Collection的常见方法

Collection是所有单列集合的根接口

常见方法:
  (常用)public boolean add(E e) 把给定的对象添加到当前集合中
   public void clear() :清空集合中所有的元素。
   public boolean remove(E e) : 把给定的对象在当前集合中删除。
   public boolean contains(Object obj) : 判断当前集合中是否包含给定的对象。
   public boolean isEmpty() : 判断当前集合是否为空。
  (常用)public int size() : 返回集合中元素的个数。
   public Object[] toArray() : 把集合中的元素,存储到数组中

Collection是一个接口,如果要用,需要使用实现类,最常用的实现类是ArrayList

1.3 增强for循环

在JDK5的时候,多了一个新的遍历方式叫做增强for循环(foreach),可以遍历数组或集合。

01 增强for遍历数组

格式: for (数据类型 变量名 : 容器) { ... } 格式解释: 数据类型:要遍历的容器中保存的是什么类型的数据,这个数据类型就写什么。 变量名: 表示容器中的每一个元素。 容器: 要遍历的容器,可以是数组,也可以是集合。

使用增强for遍历数组

增强for是一种语法糖,语法糖指的是本质没有变,只不过写法更加的简洁了。 增强for遍历数组,本质还是使用的普通for循环

02 使用增强for遍历集合

格式: for (数据类型 变量名 : 集合) {}

注意: 增强for遍历集合,本质使用的是迭代器遍历

增强for的好处和缺点: 好处: 写法简洁,省去了对索引的操作。 缺点: 因为省略了索引,所以无法再遍历的过程中操作索引。如果要在遍历过程中操作索引,还是需要使用普通for循环。

 

1.4 泛型

  • 泛型是一种未知的,不确定的数据类型。

  • 泛型也可以省略,如果省略泛型相当于泛型是Object

  • 泛型之间是没有继承关系的。 比如:ArrayList<Object> 不是 ArrayList<String>的父类

  • 如果在定义类的时候,类名后面写上<T>,就表示在类的范围内定义了一个泛型类型T(不确定的数据类型T)

  • 这种未知的类型T等到我们使用这个类的时候就会被确定出来。

  • 这个T可以使用其他字母代替。

泛型好处:

  1. 省略了向下转型的代码。

  2. 将运行时期的问题提前到了编译时期。

泛型擦除

Java中的泛型都是伪泛型,泛型只在源代码阶段有效,一旦编译,泛型就会消失。

泛型方法

泛型方法的定义格式: 修饰符 <泛型> 返回值类型 方法名(参数列表) { 方法体; return 返回值; } 在方法上定义的泛型,需要等到调用方法的时候才能确定。

 

public class Factory<T> {
/*
   定义方法,接收什么类型的参数,就得到什么类型的结果
*/
public <E> E getSame(E e) {
   return e;
}
}

泛型通配符

如果想要接受任何类型类型的泛型,可以使用泛型通配符 ?表示泛型通配符,可以匹配任何类型的泛型。

泛型通配符要放在方法参数位置被动匹配, 不要主动使用。

泛型限定

如果限制泛型通配符的取值范围,那么可以使用泛型限定。

格式:
   <? extends A>:泛型要么是A类,要么是A类的子类。 上限。
   <? super A>泛型要么是A类,要么是A类的父类。 下限。

1.5 数据结构

特点:先进后出(FILO)

队列

特点:先进先出(FIFO)

数组

特点:查询快,增删慢

为什么查询快

因为数组在内存中是连续存储的(也就是数组中的元素是相邻的),可以根据数组的首元素的地址值算出其他元素的地址值

为什么增删慢

因为数组定长,如果要进行增删操作,需要创建新的数组

 

ArrayList内部是在使用数组保存数据。

链表

链表是由多接点组成,每个节点至少包含两个东西

1 存储的数据 ,2 指向下个节点的地址

特点:查询慢,增删快

为什么查询慢

链表在内存中是离散存储的,链表中的节点在内存中是没有规律的,如果要找到某个节点,必须先找到他的上一个节点

为什么增删快

进行增删操作时,修改地址值即可

 

LinkedList内部是在使用双向链表保存数据。

posted @ 2021-12-29 23:46  进击的小蔡鸟  阅读(47)  评论(0编辑  收藏  举报