JAVA自学-DAY11

List接口:因为List是有序的,就有一些索引的操作。

增add addAll、删 remove 、改 set 、查get 、插add(int index )、长度size 遍历iterator

|---子接口:List 存储有序的、可重复的数据(“动态数组”)会扩展数组长度

根据底层数组使用什么储存来区别用哪个

|----- ArraysList(主要实现类);线程不安全

添加、查找效率较高;插入、删除效率较低

|----- LinkedList 底层使用双向链表的方式储存:在对集合中的数据进行频繁的插入和删除操作时,建议用该集合。

插入、删除效率较低;添加、查找效率较低

|----- Vector(早期版本,向量);线程安全+

面试题[ArraysList 与 Vector的区别]?[ArraysList 与 LinkedList的区别?]

Set及其实现类特点

|---子接口:Set 储存无序的、不可重复的数据(高中学习的集合)

|----- HashSet:主要实现类,底层使用HashMap,即使用数组+单向链表+红黑树结构进行储存(jdl8)

|----- LinkedHshSet 是HashSet的子类;在现有的数组+单向链表+红黑树结构的基础上,又添加了一组双向链表,用于记录顺序

|------TreeSet:底层使用红黑树储存。可以按照添加的元素的指定的顺序进行遍历

Set set = new HashSet(); 使用较少

增删改查和List类似 但是他是无序的,所以遍历展现的顺序不定。

无序性不等于随机性

添加元素的顺序和遍历元素的顺序不一定,是不是就是无序的呢?NO

无序是根据hash值,而存放的位置按添加顺序比较是不同的

不可重复性,添加到set中的元素是不能相同的。比较的标准,需要判断hashCode()得到的哈希值以及equals()得到的boolean类型的结果。

哈希值相同且equals()返回true,则认为元素相同

TreeSet:必须是同一类型的元素

  1. Comparator的复习
  2. Comparable的复习
  3. TreeSet的复习

>>>13.泛型

泛型格式:

如果我们没有给集合指定类型,默认所以的数据类型都是object类型,虽然可以给集合添加任意的数据类型。

坏处:我们在获取数据类型时,不能调用他的方法

泛型的使用,可以提示编译报错,保证类型的安全。一旦指明使用了泛型的具体类型,则在集合的相关方法中,凡是使用类的泛型的位置,都被替换为具体的泛型。

编写一个泛型的Arraylist 泛型,不确定的数据类型

泛型方法

|>>>14.数据结构和集合源码

|>>>15.File类与IO流

1.File类的理解:File 位于java.io包中 File类的一个对象,对应操作系统下的一个文件或一个文件目录。

2.内部api使用说明

2.1构造器

      • pubulic File(String pathname) : 以pathname为路径创建File对象,可以时绝对路径或者相对路径。绝对路径:包括Windows盘符在内的文件目录的完整目录。相对路径:相对于某一个文件目录来讲的相对的位置。
      • pubulic File(String parent , String child) : parent 为父路径,child为子路径创建File对象。
      • pubulic File(File parent , String child ) : 根据一个父File对对象和子文件路径创建File对象

2.2常用方法

      • getName 获取名称
      • getPath 获取路径
      • getAbsolutePath 获取绝对路径
      • getAbsoluteFile 获取绝对路径的文件
      • getParent
      • 1
      • 2
      • 3
    • 列出目录的下一级
      • public String[] list() : 返回一个String数组 , 表示该File目录下的所有子文件或目录
      • public File[] listFiles() : 返回一个File的数组,表示该File目录中的所有子文件或目录

2.3File类的重命名功能

      • public boolean renameTo(File dest): 把文件重命名为指定的文件路径

2.4判断功能的方法

      • exists() 此File表示的文件或者目录判断是否存在
      • isDirectory() 此File表示的是否为目录
      • isFile() 此File表示是否为文件
      • canRead() 此File表示是否可读
      • canWrite() 此File表示是否可写
      • isHidden() 此File表示是否隐藏
      • endsWith() 有没有改后缀的文件

2.5创建和删除功能

      • createNewFile() 创建文件。若文件存在,则不创建,返回false
      • mkdir() 创建文件目录。若文件目录存在,则不创建。
      • mkdirs()创建文件目录。如果上层文件目录不存在,一起创建
      • delete() 删除文件或这文件夹
    • 删除不走回收站,要删除一个文件目录,里面不能有内容

IO流:Input/Output 流(Stream)

IO流的分类

》流向的不同:输入流、输出流

》处理单位的不同:字节流(所有类型的文件)、字符流(文本)

》流的角色不同:节点流、功能流

流的API

抽象基流 4个节点流(也称文件流)

InputStream FileInputStream

OutputStream FileOutputStream

Reader FileReader

Writer FileWriter

3. FileWriter\FileReader 的使用

3.1 执行步骤

    1. 创建File类的对象,对应着文件
    2. 创建输入流的字符流,用于读取数据
    3. 读入:read(char[] cbuffer)

读写:write(String str) / write(char[] cbuffer,0,len)

    1. 流资源的关闭操作(必须要关闭,否则会内存泄漏)

3.2注意点

① 关闭需要用 try-catch-finally 的方式来处理异常

② 输入时,不存在文件就会报错FindNotFoundExpcetion

输出可以不存在,如果不存在会新建。存在就可以用FileWriter(File file , true) 或 FileWriter(File file , false) 会覆盖

File file = new File("DAY11\\src\\IOStream" , "hello.txt"); FileReader fr = new FileReader(file); 方式1. int data = fr.read(); while(data != -1){ System.out.print((char)data); data = fr.read(); } 方式2. int data; while ((data = fr.read()) != -1){ System.out.print((char)data); } fr.close();

4.FileInputStream \ FileOutStream 的使用

    • 输入input:读取数据,存放到程序内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值