数据结构
栈:先进后出
队列: 先进先出
数组:查询快,增删慢
链表:查询慢,增删快(链表中的地址不是连续的,每次查询,都需要从头开始查询,但增删元素,对链表整体结构没有影响,所以增删快)(增快,删相对慢)
单向链表无序,双向链表有序
红黑树:查询速度特别快
ArrayList
Arraylist的底层是数组结构,所以查询快,增删慢
LinkedList
底层是一个链表(双向链表),查询慢,增删快
注意:使用特有方法不能用多态
addfirst 插入开头
addlast 添加到末尾,等同于add
push 等同于addfirst
getfirst 返回第一个元素
getlast 返回最后一个元素
removeFirst 移除并返回第一个元素
removelast 移除并返回最后一个元素
pop 等同于removeFirst
Vector
单线程,速度慢,被ArrayList取代
==========Set===========
Set接口
不允许存储重复的元素
没有索引,没有带索引的方法,也不能使用普通for循环遍历)(可以用迭代器和增强for循环)
HashSet
无序的集合,存储元素和取出元素的顺序可能不一样
底层是哈希表结构(查询速度非常快)
不允许存储重复的元素
存储过程:获取元素的哈希值,去集合中判断有没有相同的哈希值,有就执行equals判断,是不是同一元素,不是就存储,如果元素相同,就不会放入集合
使用HashSet存储自定义对象,需要重写HashCode和equals方法
LinkedHashSet
底层是哈希表机构(数组+链条+红黑树)再加一个链条
可变参数
方法的参数类型已经确定,参数数量不确定
注意:一个方法的参数列表,只能有一个可变参数
如果方法的参数有多个,那么可变参数必须写在参数列表的末尾
特殊写法(终极写法):(Object...obj)
有序的,也不允许重复
Collections
Collections.addAll 往集合中添加多个元素
Collections.shuffle 打乱顺序
sort 排序
自定义的类需要实现compareble,然后重写
File类
file 文件,
directory 文件夹,
路径 path,
成员变量(静态):
pathSeparator 路径分隔符
pathSeparatorChar
pathseparator 名称分隔符
pathseparatorChar
转义符
打印 “\”“ “” ”,java会识别不了,将其认为是符号不是字符串;
这是就需要转义符: \
绝对路径和相对路径
绝对:完整的路径,从盘符开始,C:\\a.txt
相对:简化的路径,相对是指当前项目的根目录,
路径不区分大小写
File类的构造方法
file.getAbsolutePath() 获取当前file对象的绝对路径
file.Path() 获取当前file对象构造中传入的路径
file.getName() 获取当前文件的名称
file.length() 获取当前文件的大小
判断路径是否存在
boolean exists 判断文件是否存在
boolean isDirectory() 判断是否是目录
boolean isFile() 判断是否是文件
创建删除功能的方法
createNewFile() 当具有该名称的文件不存在是,创建一个新的空文件
delete 删除File表示的文件或文件夹 如果文件夹里面有文件,就删不了,得先删文件
mkdir 创建file表示的目录
mkdirs 同上,但包括创建任何必需但没有的多级文件夹
遍历
list String类型,返回名称
listfiles File类型,返回路径
IO流
字节流
close 关闭此输出流并并释放与此流相关的联的任何系统资源
flush 刷新此输出流并强制任何缓冲的任何输出字节被写出
write(byte[] b) 将b.length字节从指定的字节数组写入此输出流
write(byte[]b,int off ,intlen) 从指定的字节数组写入 len字节,从偏移量 off开始输
出到此输出流
write(int b) 将指定的字节输出流 |
|