[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2OqLhIdS-1613780200617)(C:\Users\lcj\AppData\Roaming\Typora\typora-user-images\image-20210207194842897.png)]TreeSet测试
package com.CollectionText;
import java.util.Comparator;
import java.util.TreeSet;
public class StringApplication {
public static void main(String[] args) {
StringText s1=new StringText("2 fghjklasjhgfskbanlv");
StringText s2=new StringText("1 fgdhkjak;fl's;v");
StringText s3=new StringText("4 hbjvl;aio'oo;vlgiyu;h'ipdjoa'sbvou");
StringText s4=new StringText("3 n lhka;oiskpef9hvin'pak");
//创建集合,并指定比较规则
TreeSet<StringText> stringTexts=new TreeSet<>(new Comparator<StringText>() {
@Override
public int compare(StringText o1, StringText o2) {
int n1=o1.getSt1().length()-o2.getSt1().length();
int n2=o1.getSt1().compareTo(o2.getSt1());
return n1==0?n2:n1;
}
});
stringTexts.add(s1);
stringTexts.add(s2);
stringTexts.add(s3);
stringTexts.add(s4);
System.out.println(stringTexts.toString());
}
}
package com.CollectionText;
public class StringText {
String st1;
public StringText(String st1) {
this.st1 = st1;
}
public String getSt1() {
return st1;
}
public void setSt1(String st1) {
this.st1 = st1;
}
@Override
public String toString() {
return "StringText{" +
"st1='" + st1 + '\'' +
'}';
}
}
Map 集合
Map接口特点:
1. 用于存储任意值对(Key-Value)
2. 键:无序、无下标、不允许重复(唯一)
3. 值:无序、无下标、允许重复
package com.mapTezt;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
Map接口的使用
特点:1.存储的键值对2。键不能重复、值可以重复3。无序
*/
public class Demo01 {
public static void main(String[] args) {
//创建Map集合
Map<String,String> map=new HashMap<>();
//添加元素
map.put("cn","中国");
map.put("ua","英国");
map.put("usa","美国");
System.out.println(map.size());
System.out.println(map.toString());
//删除元素
map.remove("usa");
System.out.println(map.size());
//遍历
//1.使用KeySet();
Set<String> set = map.keySet();
for (String key:set) {
System.out.println(key+"----"+map.get(key));
}
Set<Map.Entry<String, String>> entries = map.entrySet();
for (Map.Entry<String,String> entry:entries) {
System.out.println(entry.getKey()+"----"+entry.getValue());
}
}
}
I/O流
字节输出流【OutputStream】
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cgZtXvbm-1613780200619)(C:\Users\lcj\AppData\Roaming\Typora\typora-user-images\image-20210207155724570.png)]
package com.ioText;
/*
java.io.OutputStream: 字节输出流
此抽象类是表示所有字节流的所有类的超类(父类)
定义了一些子类共性的成员方法
-publi void close():关闭此输出流并释放与此相关联的任何资源
-publi void flush():刷新此输出流并强制任何缓冲的输出字节被写入
-publi void write(byte[] b):将b.length字节从指定的字节数组写入此输出流
-publi void write(byte[] b,int off,int len):从指定字节数组len字节,从偏移量off开始输出到此输出流
-publi abstract void write(byte[] b)从指定的字节输出流
java.io.FileOutPutStream extends OutPutStream
FileOutPutStream:文件字节输出流
作用:把内存中的数据写入到硬盘的文件中
构造方法:
FileOutputStream(String name)创建一个向具有指定名称的文件中写入数据的输出文件流
FileOutputStream(File file)创建一个向指定File对象表示的文件中写入数据的文件输出流
参数:写入数据的目的
String name;目的地是文件的路径
File file;目的地是一个文件
构造方法的作用:
1. 创建一个FileOutputStream对象
2. 会根据构造方法中传递的文件/文件路劲,创建一个空的文件
3. 会把FileOutputStream对象指向创建好的文件
写入数据的原理(内存-->硬盘)
java程序-->JVM(java虚拟机)-->OS(操作系统)-->OS调用写数据的方法-->把数据写入文件中
字节输出流的步骤(重点)
1.创建一个FileOutputStream对象,构造方法中传递谢润数据的目的地
2.调用FileOutputStream对象中的Write,把数据写入到文件中
3.释放资源(流使用会占用一定的内存,使用完毕要把内存清空,提高程序与的效率)
*/
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo01 {
public static void main(String[] args) throws IOException {
//1.创建一个FileOutputStream对象,构造方法中传递谢润数据的目的地
FileOutputStream fos=new FileOutputStream("基础语法\\a.txt");
//2.调用FileOutputStream对象中的Write,把数据写入到文件中
fos.write(97);//-publi abstract void write(byte[] b)从指定的字节输出流
//3.3.释放资源(流使用会占用一定的内存,使用完毕要把内存清空,提高程序与的效率)
fos.close();
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iZsoeUzp-1613780200622)(C:\Users\lcj\AppData\Roaming\Typora\typora-user-images\image-20210207170410308.png)]
package com.ioText;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
/*
-public void write(byte[] b):将b.length字节从指定的字节数组写入此输出流
一次写多个字节的方法
-public void write(byte[] b,int off,int len):把字节数组的一部分写入到吻技安
从指定字节数组len字节,从偏移量off开始输出到此输出流
*/
public class Demo02 {
public static void main(String[] args) throws IOException {
//创建FileOutputStream对象,构造方法中绑定要写入数据的目的地
FileOutputStream fos = new FileOutputStream(new File("基础语法\\b.txt"));
//调用FileOutputStream对象中的方法write,把数据写入文件中
//面试题:在文件要显示100,要写入几个字节
fos.write(49);
fos.write(48);
fos.write(48);
/*
-public void write(byte[] b):将b.length字节从指定的字节数组写入此输出流
一次写多个字节
如果写第一个字节是正数(0-127),那么显示的时候会查询ASCII表
如果写的第一个字节是负数,那么第一个字节会和第二个字节,两个字节组成一个中文显示,查询默认码表(GBK)
*/
byte[] bytes={65,66,67,68,69};
fos.write(bytes);
/*
-public void write(byte[] b,int off,int len):从指定字节数组len字节,从偏移量off开始输出到此输出流
int off:数组的开始索引 int len:写几个字节
*/
fos.write(bytes,1,2);
/*
写入字符的方法:可以使用String类中的方法把字符串转换为字节数组
byte[] getBytes(); 把字符串转换为字节数组
*/
byte[] bytes1 = "你好".getBytes();
System.out.println(Arrays.toString(bytes1));
fos.write(bytes1);
//释放资源
fos.close();
}
}
package com.ioText;
import java.io.FileOutputStream;
import java.io.IOException;
/*
追加写/续写:使用两个参数的构造方法
FileOutputStream(String name,boolean append)创建一个向具有指定 name 的文件中写入数据的输出文件流
FileOutputStream(File file,boolean append)创建一个向指定file对象表示的文件中写入数据的文件输出流。
参数:
String name,File file:写入数据的目的地
boolean append:追加写的开关
true:创建对象不会覆盖原文件,继续在文件的末尾追加写数据
false:创建一个新文件,覆盖源文件
写换行:写换行符
windows:\r\n
linux:/n
mac:/r
*/
public class Demo03 {
public static void main(String[] args) throws IOException {
//创建对象
FileOutputStream fos=new FileOutputStream("基础语法\\c.txt",true);
for (int i = 1; i <10 ; i++) {
//写入数据
fos.write("你好".getBytes());// 把字符串转换为字节数组
fos.write("\r\n".getBytes());//换行符号
}
//释放资源
fos.close();
}
}
字节输入流【InputStream】
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7qIJo129-1613780200624)(C:\Users\lcj\AppData\Roaming\Typora\typora-user-images\image-20210207194827390.png)]