底层数据结构是数组,查询快,增删慢
线程不安全,效率高
Vector:
底层数据结构是数组,查询快,增删慢
线程安全, 效率低
特有方法:
public void addElement(E obj) --> add()
public E elementAt(int index) --> get(int index)
public Enumeration<E> elements() ---> iterator()
boolean hasMoreElements() ---> hasNext()
E nextElement() ---> next()
LinkedList:
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
特有方法:
void addFirst(E e) 将指定元素插入此列表的开头。
void addLast(E e) 将指定元素添加到此列表的结尾。
E getFirst() 返回此列表的第一个元素
E getLast() 返回此列表的最后一个元素
E removeFirst() 移除并返回此列表的第一个元素。
E removeLast() 移除并返回此列表的最后一个元素
Stack: 栈
方法:
boolean empty() 测试堆栈是否为空
E push(E item) 把项压入堆栈顶部。
E pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象
—————————————————————————————
去除集合中字符串的重复值
方式1: 采用选择排序算法
方式2: 创建新集合方式
—————————————————————————————
泛型: 用来约束数据的数据类型
泛型的格式:
<数据类型>
泛型可以使用在 类,接口,方法,变量上
泛型的好处
A:提高了程序的安全性
B:将运行期遇到的问题转移到了编译期
C:省去了类型强转的麻烦
泛型类, 就是把泛型的声明 定义在类上
如何声明一个泛型类 :
格式 : public class 类名 <泛型类型> {}
什么时候将泛型的类型确定的?
创建对象的时候确定的
泛型方法: 把泛型定义声明在方法上
如何声明一个泛型方法:
格式:public <泛型类型> 返回类型 方法名(泛型类型 .)
什么时候将泛型的类型确定的?
调用方法的时候确定的
泛型接口: 把泛型定义在接口上
如何声明一个泛型接口:
格式:public interface 接口名<泛型类型1…>
什么时候将泛型的类型确定的?
创建接口子类对象的时候确定的
泛型高级(通配符):
泛型通配符<?>
任意类型,如果没有明确,那么就是Object以及任意的Java类了
? 理解为就是 Object类型
<? extends E>
向上限定,E及其子类
? extends Animal
? 代表的就是Animal类本身或者是Animal类的子类
<? super E>
向下限定,E及其父类
? super Animal
? 代表的就是Animal类本身或者是Animal类的父类
—————————————————————————————
无论登入还是注册 都是与用户相关的信息
所以,我们要提供一个 用户类
class User {
String 用户名;
String 密码;
public boolean 登录 (用户名, 密码){}
public boolean 注册 (用户类对象 ){}
}
—————————————————————————————
随着将来功能的增加,把所有的内容 都放在 用户类中是不合适的
把 用户类 进行拆解: 拆解成 用户基本信息类 与 用户功能操作类
class 用户基本信息类 {
String 用户名;
String 密码;
}
class 用户功能操作类 {
public boolean 登录 (用户名, 密码){}
public boolean 注册 (用户类对象 ){}
}
—————————————————————————————
界面
选择对应的功能
1: 登入
输入用户名与密码信息
调用登入功能
2: 注册
创建用户对象
调用注册功能
3: 退出
结束JVM
—————————————————————————————
按功能进行分包操作:
pojo: 具体的实体类
User.java 用户类
ui: 界面
MainApp.java 界面类
dao: 具体的功能类的接口
UserDao.java 用户功能接口文件
登入功能(抽象方法)
注册功能(抽象方法)
dao.impl: 具体功能类的实现类包
UserDaoImpl.java 用户功能具体实现类
登入功能(具体方法)
注册功能(具体方法)
—————————————————————————————
Set:
|- HashSet
|- LinkedHashSet
|- TreeSet
set:
元素唯一不能重复
HashSet:
元素唯一不能重复
底层结构是 哈希表结构
元素的存与取的顺序不能保证一致
如何保证元素的唯一的?
重写hashCode() 与 equals()方法
LinkedHashSet:
元素唯一不能重复
底层结构是 哈希表结构 + 链表结构
元素的存与取的顺序一致
如何保证元素的唯一与有序的?
元素唯一: 哈希表结构保证的
元素有序: 链表结构保证的
TreeSet:
元素唯一不能重复
底层结构是 二叉树结构
元素的存与取的顺序不能保证一致
但是,在集合内部进行了元素的排序【自然排序,比较器排序】
自然排序接口 Comparable<T>
实现方法 public abstract int compareTo(T obj);
比较器排序接口 Comparator<T>
实现方法 public abstract int compare(T obj1, T obj2);
TreeSet集合是如何保证元素唯一并有序的?
自然排序接口 Comparable<T>
比较器排序接口 Comparator<T>