java.util.Arrays类即为操作数组的工具类,包含了用来操作数组(比
如排序和搜索)的各种方法。
方法 | 作用 |
---|---|
boolean equals(int[] a,int[] b) | 判断两个数组是否相等。 |
String toString(int[] a) | 输出数组信息。 |
void fill(int[] a,int val) | 将指定值填充到数组之中。 |
void sort(int[] a) | 对数组进行排序。 |
int binarySearch(int[] a,int key) | 对排序后的数组进行二分法检索指定的值。 |
构造方法
构造方法 | 作用 |
---|---|
Thread() | 创建新的Thread对象 |
Thread(String threadname) | 创建线程并指定线程实例名 |
Thread(Runnable target) | 指定创建线程的目标对象,它实现了Runnable接口 |
Thread(Runnable target, String name) | 创建新的Thread对象 |
Thread类的有关方法
方法 | 作用 |
---|---|
void start() | 启动线程,并执行对象的run()方法 |
run() | 线程在被调度时执行的操作 |
void setName(String name) | 设置该线程名称 |
static Thread currentThread() | 返回当前线程。在Thread子类中就是this,通常用于主线程和Runnable实现类 |
static void yield() | 线程让步 暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程 若队列中没有同优先级的线程,忽略此方法 |
join() | 当某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到 join() 方法加入的 join 线程执行完为止 低优先级的线程也可以获得执行 |
static void sleep(long millis):(指定时间:毫秒) | 令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队。抛出InterruptedException异常 |
stop() | 强制线程生命期结束,不推荐使用 |
boolean isAlive() | 返回boolean,判断线程是否还活着 |
getPriority() | 返回线程优先值 |
setPriority(int newPriority) | 改变线程的优先级 |
thread.setDaemon(true) | 可以把一个用户线程变成一个守护线程 |
Object中关于线程的方法
线程的通信
方法 | 作用 |
---|---|
wait() | 令当前线程挂起并放弃CPU、同步资源并等待,使别的线程可访问并修改共享资源,而当前线程排队等候其他线程调用notify()或notifyAll()方法唤醒,唤醒后等待重新获得对监视器的所有权后才能继续执行。 |
notify() | 唤醒正在排队等待同步资源的线程中优先级最高者结束等待 |
notifyAll () | 唤醒正在排队等待资源的所有线程结束等待 |
这三个方法只有在synchronized方法或synchronized代码块中才能使用,否则会报
java.lang.IllegalMonitorStateException异常。
因为这三个方法必须有锁对象调用,而任意对象都可以作为synchronized的同步锁,
因此这三个方法只能在Object类中声明。
线程池
JDK 5.0起提供了线程池相关API:ExecutorService 和 Executors
ExecutorService:真正的线程池接口。常见子类ThreadPoolExecutor
方法 | 作用 |
---|---|
void execute(Runnable command) | 执行任务/命令,没有返回值,一般用来执行Runnable |
Future submit(Callable task) | 执行任务,有返回值,一般又来执行Callable |
void shutdown() | 关闭连接池 |
Executors:工具类、线程池的工厂类,用于创建并返回不同类型的线程池
方法 | 作用 |
---|---|
Executors.newCachedThreadPool() | 创建一个可根据需要创建新线程的线程池 |
Executors.newFixedThreadPool(n)) | 创建一个可重用固定线程数的线程池 |
Executors.newSingleThreadExecutor() | 创建一个只有一个线程的线程池 |
Executors.newScheduledThreadPool(n) | 创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行 |
String常用方法
方法 | 作用 |
---|---|
int length() | 返回字符串的长度: return value.length |
char charAt(int index)) | 返回某索引处的字符return value[index] |
boolean isEmpty() | 判断是否是空字符串:return value.length == 0 |
String toLowerCase() | 使用默认语言环境,将 String 中的所有字符转换为小写 |
String toUpperCase() | 使用默认语言环境,将 String 中的所有字符转换为大写 |
char charAt(int index)) | 返回某索引处的字符return value[index] |
String trim() | 返回字符串的副本,忽略前导空白和尾部空白 |
boolean equals(Object obj) | 比较字符串的内容是否相同 |
boolean equalsIgnoreCase(String anotherString) | 与equals方法类似,忽略大小写 |
String concat(String str) | 将指定字符串连接到此字符串的结尾。 等价于用“+” |
int compareTo(String anotherString)) | 比较两个字符串的大小 |
String substring(int beginIndex) | 返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串 |
String substring(int beginIndex, int endIndex) | 返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串 |
boolean endsWith(String suffix) | 测试此字符串是否以指定的后缀结束 |
boolean startsWith(String prefix)) | 测试此字符串是否以指定的前缀开始 |
boolean startsWith(String prefix, int toffset) | 测试此字符串从指定索引开始的子字符串是否以指定前缀开始 |
boolean contains(CharSequence s) | 当且仅当此字符串包含指定的 char 值序列时,返回 true |
int indexOf(String str) | 返回指定子字符串在此字符串中第一次出现处的索引 |
int indexOf(String str, int fromIndex)) | 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始 |
int lastIndexOf(String str) | 返回指定子字符串在此字符串中最右边出现处的索引 indexOf和lastIndexOf方法如果未找到都是返回-1 |
int lastIndexOf(String str, int fromIndex) | 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索 |
String replace(char oldChar, char newChar) | 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
String replace(CharSequence target, CharSequence replacement) | 使 用 给 定 的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串 |
String replaceAll(String regex, String replacement)) | 使 用 给 定 的replacement 替换此字符串所有匹配给定的正则表达式的子字符串 |
String replaceFirst(String regex, String replacement) | 返回指定子字符串在此字符串中最右边出现处的索引 indexOf和lastIndexOf方法如果未找到都是返回-1 |
boolean matches(String regex) | 告知此字符串是否匹配给定的正则表达式 |
String[] split(String regex) | 根据给定正则表达式的匹配拆分此字符串 |
String[] split(String regex, int limit)) | 根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中 |
String与基本数据类型转换
方法 | 作用 |
---|---|
public static int parseInt(String s) | 可以将由“数字”字符组成的字符串转换为整型 |
public String valueOf(int n) | 可将int型转换为字符串 |
String与字符数组转换
字符数组 -->字符串
方法 | 作用 |
---|---|
String(char[]) String 类的构造器 | 用字符数组中的全部字符创建字符串对象 |
String(char[],int offset,intlength) String 类的构造器 | 用字符数组中的部分字符创建字符串对象 |
String(byte[]) | 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String |
String(byte[],int offset,int length) | 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象 |
字符串 --> 字节数组
方法 | 作用 |
---|---|
public char[] toCharArray() | 将字符串中的全部字符存放在一个字符数组中的方法 |
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 提供了将指定索引范围内的字符串存放到数组中的方法 |
public byte[] getBytes() | 使用平台的默认字符集将此 String 编码为byte 序列,并将结果存储到一个新的 byte 数组中 |
public byte[] getBytes(String charsetName) | 使用指定的字符集将 此 String 编码到 byte 序列,并将结果存储到新的 byte 数组 |
StringUtils工具类
方法 | 作用 |
---|---|
public static boolean isEmpty(String str) | 判空 return str == null |
public static boolean isBlank(String str) | 判断更严谨,包含的有空串("")、空白符(空格""," “,制表符”\t",回车符"\r","\n"等)以及null值; |
public static boolean isNotEmpty(String str) | return !StringUtils.isEmpty(str); |
public static boolean isNotBlank(String str) | return !StringUtils.isBlank(str); |
public static String capitalize(String str) | 首字母大写 |
public static String uncapitalize(String str) | 首字母小写 |
StringUtils.remove(String str, char remove) | 移除单个字符 |
StringUtils.remove(String str, String remove) | 移除单个字符 |
public static String deleteWhitespace(String str) | 去除所有空白符 |
public static String trimToEmpty(String str) | 先trim,如果为null,返回空字符串 |
public static String trimToNull(String str) | 先trim,如果为空,返回null |
StringUtils.strip("[asdf]", “[]”) | strip最常用的一个方法就是去掉前后面匹配的符号,这个应用广泛 |
StringBuffer类
方法 | 作用 |
---|---|
StringBuffer() | 初始容量为16的字符串缓冲区 |
StringBuffer(int size) | 构造指定容量的字符串缓冲区 |
StringBuffer(String str) | 将内容初始化为指定字符串内容 |
StringBuffer delete(int start,int end) | 删除指定位置的内容 |
StringBuffer replace(int start, int end, String str) | 把[start,end)位置替换为str |
StringBuffer(int size) | 构造指定容量的字符串缓冲区 |
StringBuffer insert(int offset, xxx) | 在指定位置插入xxx |
StringBuffer reverse() | 把当前字符序列逆转 |
public int indexOf(String str) | |
public int length() | |
public String substring(int start,int end) | |
public char charAt(int n ) | |
public void setCharAt(int n ,char ch) |
StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且
提供相关功能的方法也一样
日期时间API
后续补上
System类
成员变量
方法 | 作用 |
---|---|
native long currentTimeMillis() | 该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。 |
void exit(int status) | 该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等 |
void gc() | 该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况 |
String getProperty(String key) | 该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示 |
Math类
方法 | 作用 |
---|---|
abs | 绝对值 |
acos,asin,atan,cos,sin,tan | 三角函数 |
sqrt | 平方根 |
pow(double a,doble b) | a的b次幂 |
log | 自然对数 |
exp | e为底指数 |
max(double a,double b) | 最大数 |
min(double a,double b) | 最小数 |
random() | 返回0.0到1.0的随机数 |
long round(double a) | double型数据a转换为long型(四舍五入) |
BigInteger类
方法 | 作用 |
---|---|
public BigInteger abs() | 返回此 BigInteger 的绝对值的 BigInteger |
BigInteger add(BigInteger val) | 返回其值为 (this + val) 的 BigInteger |
BigInteger subtract(BigInteger val) | 返回其值为 (this - val) 的 BigInteger |
BigInteger multiply(BigInteger val) | 返回其值为 (this * val) 的 BigInteger |
BigInteger divide(BigInteger val) | 返回其值为 (this / val) 的 BigInteger。整数相除只保留整数部分 |
BigInteger remainder(BigInteger val) | 返回其值为 (this % val) 的 BigInteger |
BigInteger[] divideAndRemainder(BigInteger val) | 返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组 |
BigInteger pow(int exponent) | 返回其值为 (thisexponent) 的 BigInteger |
BigDecimal类
一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,
要求数字精度比较高,故用到java.math.BigDecimal类。
Collection 接口方法
方法 | 作用 |
---|---|
add(Object obj) | 添加单个元素 |
addAll(Collection coll) | 添加集合元素 |
int size() | 获取有效元素的个数 |
void clear() | 清空集合 |
boolean isEmpty() | 是否是空集合 |
boolean contains(Object obj) | 是通过元素的equals方法来判断是否是同一个对象 |
boolean containsAll(Collection c) | 也是调用元素的equals方法来比较的。拿两个集合的元素挨个比较 |
boolean remove(Object obj) | 通过元素的equals方法判断是否是要删除的那个元素。只会删除找到的第一个元素 |
boolean removeAll(Collection coll) | 取当前集合的差集 |
boolean retainAll(Collection c) | 把交集的结果存在当前集合中,不影响c |
boolean equals(Object obj) | 集合是否相等 |
Object[] toArray() | 转成对象数组 |
hashCode() | 获取集合对象的哈希值 |
iterator() | 返回迭代器对象,用于集合遍历 |
List接口方法
方法 | 作用 |
---|---|
void add(int index, Object ele) | 在index位置插入ele元素 |
boolean addAll(int index, Collection eles) | 从index位置开始将eles中的所有元素添加进来 |
Object get(int index) | 获取指定index位置的元素 |
int indexOf(Object obj) | 返回obj在集合中首次出现的位置 |
int lastIndexOf(Object obj) | 返回obj在当前集合中末次出现的位置 |
Object remove(int index) | 移除指定index位置的元素,并返回此元素 |
Object set(int index, Object ele) | 设置指定index位置的元素为ele |
List subList(int fromIndex, int toIndex) | 返回从fromIndex到toIndex位置的子集合 |
List实现类之一:ArrayList
LinkedList类方法
方法 | 作用 |
---|---|
void addFirst(Object obj) | 添加首个元素 |
void addLast(Object obj) | 添加末尾元素 |
Object getFirst() | 返回首个元素 |
Object getLast() | 返回末尾元素 |
Object removeFirst() | 移除首个元素 |
Object removeLast() | 移除末尾元素 |
Vector类方法
Vector总是比ArrayList慢,所以尽量避免使用
新增方法:
Set实现类之一:HashSet
Set实现类之二:LinkedHashSet
Set实现类之三:TreeSet
Map接口常用方法
添加、删除、修改操作:
方法 | 作用 |
---|---|
Object put(Object key,Object value) | 将指定key-value添加到(或修改)当前map对象中 |
void putAll(Map m) | 将m中的所有key-value对存放到当前map中 |
Object remove(Object key) | 移除指定key的key-value对,并返回value |
void clear() | 清空当前map中的所有数据 |
元素查询的操作:
方法 | 作用 |
---|---|
Object get(Object key) | 获取指定key对应的value |
boolean containsKey(Object key) | 是否包含指定的key |
boolean containsValue(Object value) | 是否包含指定的value |
int size() | 返回map中key-value对的个数 |
boolean isEmpty() | 判断当前map是否为空 |
boolean equals(Object obj) | 判断当前map和参数对象obj是否相等 |
元视图操作的方法:
方法 | 作用 |
---|---|
Set keySet() | 返回所有key构成的Set集合 |
Collection values() | 返回所有value构成的Collection集合 |
Set entrySet() | 返回所有key-value对构成的Set集合 |
方法 | 作用 |
---|---|
reverse(List) | 反转 List 中元素的顺序 |
shuffle(List) | 对 List 集合元素进行随机排序 |
sort(List) | 根据元素的自然顺序对指定 List 集合元素按升序排序 |
sort(List,Comparator) | 根据指定的 Comparator 产生的顺序对 List 集合元素进行排序 |
swap(List,int, int) | 将指定 list 集合中的 i 处元素和 j 处元素进行交换 |
Collections常用方法
方法 | 作用 |
---|---|
Object max(Collection) | 根据元素的自然顺序,返回给定集合中的最大元素 |
Object max(Collection,Comparator) | 根据 Comparator 指定的顺序,返回给定集合中的最大元素 |
Object min(Collection) | 集合中最小元素(自然排序) |
Object min(Collection,Comparator) | 集合中最小元素(定制排序) |
int frequency(Collection,Object) | 返回指定集合中指定元素的出现次数 |
void copy(List dest,List src) | 将src中的内容复制到dest中 |
boolean replaceAll(List list,Object oldVal,Object newVal) | 使用新值替换List 对象的所有旧值 |
File 类的使用:常用构造器
方法 | 作用 |
---|---|
public File(String pathname) | 以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。(1. 绝对路径:是一个固定的路径,从盘符开始) (2. 相对路径:是相对于某个位置开始) |
public File(String parent,String child) | 以parent为父路径,child为子路径创建File对象 |
public File(File parent,String child) | 根据一个父File对象和子文件路径创建File对象 |
public static final String separator。根据操作系统,动态的提供分隔符。
File 类的使用:常用方法
File类的获取功能
方法 | 作用 |
---|---|
public String getAbsolutePath() | 获取绝对路径 |
public String getPath() | 获取路径 |
public String getName() | 获取名称 |
public String getParent() | 获取上层文件目录路径。若无,返回null |
public long length() | 获取文件长度(即:字节数)。不能获取目录的长度 |
public long lastModified() | 获取最后一次的修改时间,毫秒值 |
public String[] list() | 获取指定目录下的所有文件或者文件目录的名称数组 |
public File[] listFiles() | 获取指定目录下的所有文件或者文件目录的File数组 |
File类的重命名功能
方法 | 作用 |
---|---|
public boolean renameTo(File dest) | 把文件重命名为指定的文件路径 |
File类的判断功能
方法 | 作用 |
---|---|
public boolean isDirectory() | 判断是否是文件目录 |
public boolean isFile() | 判断是否是文件 |
public boolean exists() | 判断是否存在 |
public boolean canRead() | 判断是否可读 |
public long length() | 获取文件长度(即:字节数)。不能获取目录的长度 |
public boolean canWrite() | 判断是否可写 |
public boolean isHidden() | 判断是否隐藏 |
File类的创建功能
方法 | 作用 |
---|---|
public boolean createNewFile() | 创建文件。若文件存在,则不创建,返回false |
public boolean mkdir() | 创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。 |
public boolean mkdirs() | 创建文件目录。如果上层文件目录不存在,一并创建 |
注意事项:
如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目
路径下。
File类的删除功能
方法 | 作用 |
---|---|
public boolean delete() | 删除文件或者文件夹 |
删除注意事项:
Java中的删除不走回收站。 要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录
InputStream类常用方法
方法 | 作用 |
---|---|
int read() | 从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1 |
int read(byte[] b) | 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。否则以整数形式返回实际读取的字节数 |
int read(byte[] b, int off,int len) | 将输入流中最多 len 个数据字节读入 byte 数组。尝试读取 len 个字节,但读取的字节也可能小于该值。以整数形式返回实际读取的字节数。如果因为流位于文件末尾而没有可用的字节,则返回值 -1 |
public void close() throws IOException | 关闭此输入流并释放与该流关联的所有系统资源 |
Reader类常用方法
方法 | 作用 |
---|---|
int read() | 读取单个字符。作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff)(2个字节的Unicode码),如果已到达流的末尾,则返回 -1 |
int read(char[] cbuf) | 将字符读入数组。如果已到达流的末尾,则返回 -1。否则返回本次读取的字符数 |
int read(char[] cbuf,int off,int len) | 将字符读入数组的某一部分。存到数组cbuf中,从off处开始存储,最多读len个字符。如果已到达流的末尾,则返回 -1。否则返回本次读取的字符数 |
public void close() throws IOException | 关闭此输入流并释放与该流关联的所有系统资源 |
OutputStream类常用方法
方法 | 作用 |
---|---|
void write(int b) | 将指定的字节写入此输出流。write 的常规协定是:向输出流写入一个字节。要写入的字节是参数 b 的八个低位。b 的 24 个高位将被忽略。 即写入0~255范围的 |
void write(byte[] b) | 将 b.length 个字节从指定的 byte 数组写入此输出流。write(b) 的常规协定是:应该与调用 write(b, 0, b.length) 的效果完全相同 |
void write(byte[] b,int off,int len) | 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流 |
public void flush()throws IOException | 刷新此输出流并强制写出所有缓冲的输出字节,调用此方法指示应将这些字节立即写入它们预期的目标 |
public void close() throws IOException | 关闭此输出流并释放与该流关联的所有系统资源 |
Writer类常用方法
方法 | 作用 |
---|---|
void write(int c) | 写入单个字符。要写入的字符包含在给定整数值的 16 个低位中,16 高位被忽略。 即写入0 到 65535 之间的Unicode码 |
void write(char[] cbuf) | 写入字符数组 |
void write(char[] cbuf,int off,int len) | 写入字符数组的某一部分。从off开始,写入len个字符 |
void write(String str) | 写入字符串 |
void write(String str,int off,int len) | 写入字符串的某一部分 |
void flush() | 刷新该流的缓冲,则立即将它们写入预期目标 |
public void close() throws IOException | 关闭此输出流并释放与该流关联的所有系统资源 |
节点流(或文件流)
读取文件 :
1.建立一个流对象,将已存在的一个文件加载进流。
FileReader fr = new FileReader(new File(“Test.txt”));
2.创建一个临时存放数据的数组。
char[] ch = new char[1024];
3.调用流对象的读取方法将流中的数据读入到数组中。
fr.read(ch);
4. 关闭资源。
fr.close();
FileReader fr = null;
try {
fr = new FileReader(new File("c:\\test.txt"));
char[] buf = new char[1024];
int len;
while ((len = fr.read(buf)) != -1) {
System.out.print(new String(buf, 0, len));
}
} catch (IOException e) {
System.out.println("read-Exception :" + e.getMessage());
} finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
System.out.println("close-Exception :" + e.getMessage());
}
}
}
写入文件 :
1.创建流对象,建立数据存放文件
FileWriter fw = new FileWriter(new File(“Test.txt”));
2.调用流对象的写入方法,将数据写入流
fw.write(“atguigu-songhongkang”);
3.关闭流资源,并将流中的数据清空到文件中。
fw.close();
FileWriter fw = null;
try {
fw = new FileWriter(new File("Test.txt"));
fw.write("atguigu-songhongkang");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fw != null)
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
转换流构造方法
方法 | 作用 |
---|---|
public InputStreamReader(InputStream in) | 将InputStream转换为Reader |
public InputSreamReader(InputStream in,String charsetName) | 按指定编码将InputStream转换为Reader |
public OutputStreamWriter(OutputStream out) | 将Writer转换为OutputStream |
public OutputSreamWriter(OutputStream out,String charsetName) | 按指定编码将Writer转换为OutputStream |
Path 常用方法
方法 | 作用 |
---|---|
String toString() | 返回调用 Path 对象的字符串表示形式 |
boolean startsWith(String path) | 判断是否以 path 路径开始 |
boolean endsWith(String path) | 判断是否以 path 路径结束 |
boolean isAbsolute() | 判断是否是绝对路径 |
Path getParent() | 返回Path对象包含整个路径,不包含 Path 对象指定的文件路径 |
Path getRoot() | 返回调用 Path 对象的根路径 |
Path getFileName() | 返回与调用 Path 对象关联的文件名 |
int getNameCount() | 返回Path 根目录后面元素的数量 |
Path getName(int idx) | 返回指定索引位置 idx 的路径名称 |
Path toAbsolutePath() | 作为绝对路径返回调用 Path 对象 |
Path resolve(Path p) | 合并两个路径,返回合并后的路径对应的Path对象 |
File toFile() | 将Path转化为File类的对象 |
Files 类常用方法
java.nio.file.Files 用于操作文件或目录的工具类
方法 | 作用 |
---|---|
Path copy(Path src, Path dest, CopyOption … how) | 文件的复制 |
Path createDirectory(Path path, FileAttribute> … attr) | 创建一个目录 |
Path createFile(Path path, FileAttribute> … arr) | 创建一个文件 |
void delete(Path path) | 删除一个文件/目录,如果不存在,执行报错 |
void deleteIfExists(Path path) | Path对应的文件/目录如果存在,执行删除 |
Path move(Path src, Path dest, CopyOption…how) | 将 src 移动到 dest 位置 |
long size(Path path) | 返回 path 指定文件的大小 |
Files常用方法:用于判断
方法 | 作用 |
---|---|
boolean exists(Path path, LinkOption … opts) | 判断文件是否存在 |
boolean isDirectory(Path path, LinkOption … opts) | 判断是否是目录 |
boolean isRegularFile(Path path, LinkOption … opts) | 判断是否是文件 |
boolean isHidden(Path path) | 判断是否是隐藏文件 |
boolean isReadable(Path path) | 判断文件是否可读 |
boolean isWritable(Path path) | 判断文件是否可写 |
boolean notExists(Path path, LinkOption … opts) | 判断文件是否不存在 |
Files常用方法:用于操作内容
方法 | 作用 |
---|---|
SeekableByteChannel newByteChannel(Path path, OpenOption…how) | 获取与指定文件的连接,how 指定打开方式 |
DirectoryStream newDirectoryStream(Path path) | 打开 path 指定的目录 |
InputStream newInputStream(Path path, OpenOption…how) | 获取 InputStream 对象 |
OutputStream newOutputStream(Path path, OpenOption…how) | 获取 OutputStream 对象 |
Stream 的中间操作
1.筛选与切片
方法 | 作用 |
---|---|
filter(Predicate p p) ) | 接收 Lambda , 从流中排除某些元素 |
distinct() | 筛选,通过流所生成元素的 hashCode() 和 equals() 去除重复元素 |
limit(long maxSize) | 截断流,使其元素不超过给定数量 |
skip(long n) | 跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个,则返回一个空流。与 limit(n) 互补 |
2.映射
方法 | 作用 |
---|---|
map(Function f) | 接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素 |
mapToDouble(ToDoubleFunction f) | 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 DoubleStream |
mapToInt(ToIntFunction f) | 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 IntStream |
mapToLong(ToLongFunction f) | 接收一个函数作为参数,该函数会被应用到每个元素上,产生一个新的 LongStream |
flatMap(Function f) | 接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连接成一个流 |
3.排序
方法 | 作用 |
---|---|
sorted() | 产生一个新流,其中按自然顺序排序 |
sorted(Comparator comp) | 产生一个新流,其中按比较器顺序排序 |
Stream 的终止操作
1.查找与匹配
方法 | 作用 |
---|---|
allMatch(Predicate p) | 检查是否匹配所有元素 |
anyMatch( (Predicate p) ) | 检查是否至少匹配一个元素 |
noneMatch(Predicate p) | 检查是否没有匹配所有元素 |
findFirst() | 返回第一个元素 |
findAny() | 返回当前流中的任意元素 |
count() | 返回流中元素总数 |
max(Comparator c c) ) | 返回流中最大值 |
min(Comparator c c) ) | 返回流中最小值 |
forEach(Consumer c c) ) | 内部迭代( (用 使用 Collection 接口需要用户去做迭代,称为 外部迭代 。相反, Stream API 使用内部迭代——它帮你把迭代做了 |
2.归约
方法 | 作用 |
---|---|
reduce(T iden, BinaryOperator b) | 可以将流中元素反复结合起来,得到一个值。返回 T |
reduce(BinaryOperator b) | 可以将流中元素反复结合起来,得到一个值。返回 Optional |
3.收集
方法 | 作用 |
---|---|
collect(Collector c) | 将流转换为其他形式。接收一个 Collector接口的实现,用于给Stream中元素做汇总的方法 |
Collector 接口中方法的实现决定了如何对流执行收集操作(如收集到 List、Set、Map)。但是 Collectors 实用类提供了很多静态方法,可以方便地创建常见收集器实例,具体方法与实例如下表:
方法 | 作用 |
---|---|
List emps= list.stream().collect(Collectors.toList()) | 把流中元素收集到List |
Set emps= list.stream().collect(Collectors.toSet()) | 把流中元素收集到Set |
Collectionemps=list.stream().collect(Collectors.toCollection(ArrayList::new)) | 把流中元素收集到创建的集合 |
long count = list.stream().collect(Collectors.counting()) | 计算流中元素的个数 |
inttotal=list.stream().collect(Collectors.summingInt(Employee::getSalary)) | 对流中元素的整数属性求和 |
doubleavg= list.stream().collect(Collectors.averagingInt(Employee::getSalary)) | 计算流中元素Integer属性的平均值 |
IntSummaryStatisticsiss= list.stream().collect(Collectors.summarizingInt(Employee::getSalary)) | 收集流中Integer属性的统计值。如:平均值 |
String str= list.stream().map(Employee::getName).collect(Collectors.joining()) | 连接流中每个字符串 |
Optionalmax= list.stream().collect(Collectors.maxBy(comparingInt(Employee::getSalary))) | 根据比较器选择最大值 |
Optional min = list.stream().collect(Collectors.minBy(comparingInt(Employee::getSalary))) | 根据比较器选择最小值 |
inttotal=list.stream().collect(Collectors.reducing(0, Employee::getSalar, Integer::sum)) | 从一个作为累加器的初始值开始,利用BinaryOperator与流中元素逐个结合,从而归约成单个值 |
inthow= list.stream().collect(Collectors.collectingAndThen(Collectors.toList(), List::size)) | 包裹另一个收集器,对其结果转换函数 |
Map |
根据某属性值对流分组,属性为K,结果为V |
Map |
根据true或false进行分区 |
Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常
方法 | 作用 |
---|---|
Optional.of(T t) | 创建一个 Optional 实例 |
Optional.empty() | 创建一个空的 Optional 实例 |
Optional.ofNullable(T t) | 若 t 不为 null,创建 Optional 实例,否则创建空实例 |
isPresent() | 判断是否包含值 |
orElse(T t) | 如果调用对象包含值,返回该值,否则返回t |
orElseGet(Supplier s) | 如果调用对象包含值,返回该值,否则返回 s 获取的值 |
map(Function f) | 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty() |
flatMap(Function mapper) | 与 map 类似,要求返回值必须是Optional |
还有方法后续补充