Java期末复习7

java集合框架的介绍

  • java 集合类型分为 Collection 和 Map,它们是 Java 集合的根接口 。
  • java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中。
  • java.util.Collections类,提供了集合进行排序、遍历等多种算法实现。

接口介绍:

  • Collection 接口存储一组不唯一,无序的对象。
  • List 接口存储一组不唯一(可以重复),有序(插入顺序)的对象。
  • Set 接口存储一组唯一,无序的对象。
  • Map接口存储一组键值对象,提供key到value的映射。

image-20201030211459806

HashSet

  • HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
  • HashSet 允许有 null 值。
  • HashSet 是无序的,即不会记录插入的顺序。

HashMap

  • HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
  • HashMap 是无序的,即不会记录插入的顺序。

ArrayList (基于数组) 

        实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。

常用方法

image-20201030213330580

LinkedList(基于链表)

        插入、删除操作频繁时,可使用LinkedList来提高效率。 LinkedList提供对头部和尾部元素进行添加和删除操作的方法 ,也可以在集合任何位置(头部、中间、尾部)添加、获取、删除集合对象。

常用方法

image-20201030215006783

Collection接口与collections类的比较(简答题)

  1. Collection是集合类的顶级接口。它提供对集合对象进行基本操作的通用接口方法。它的直接继承接口有List,Set等。
  2. Collections是一个包装类。它包含有各种有关集合操作的静态多态方法。它不能被实例化,起到一个工具类的作用。常见的如对集合元素进行排序、搜索以及线程安全等各种操作,服务于Java的Collection框架。

ArrayList和LinkedList 比较(简答题)

  1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 
  2. 对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList移动指针。
  3. 对于新增和删除操作add和remove,LinedList更快,因为ArrayList移动数据。

迭代器Iterator的作用 

         主要用于遍历Collection 集合中的元素。

for与iterator的区别

  • for迭代元素简单,iterator迭代起来稍微复杂。
  • for在迭代时,不能删除元素,iterator可以,原因:迭代器的remove操作删除的是最近一次由next操作获取的元素,而不是当前游标所指向的元素。

Properties集合

       Properties集合操作字符串的特有方法:

  • Object setProperty(String key, String value) 调用 Hashtable 的方法put。
  • String getProperty(String key) 通过key找到value值,此方法相当于Map集合中的get(key)方法。

字符流、字节流的操作 

  • IO提供了两个带缓冲的字节流,分别是:BufferedInputStream 、BufferedOutputStream。
  • 在JDK中提供了两个类可以将字节流转化为字符流,它们分别是InputStreamReader 和OutputStreamWriter。

File类

在java程序中,通过java.io.File 类对文件进行基本的操作。

File file = new File( String pathname );

pathname表示文件目录,如d:\aa.txt 或 d:/aaa.txt 或 d:\\aa 或d:/aa

文件类的常用方法
方法名称说明
boolean exists( )判断文件或目录是否存在
boolean isFile( )判断是否是文件
boolean isDirectory( )判断是否是目录
String getPath( )返回此对象表示的文件的相对路径名
String getAbsolutePath( )返回此对象表示的文件的绝对路径名
String getName( )返回此对象表示的文件或目录的名称
boolean delete( )删除此对象指定的文件或目录
boolean createNewFile( )创建名称的空文件,不创建文件夹
long length()返回文件的长度,单位为字节, 如果文件不存在,则返回 0L

文件的读写操作

  • InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象。

  • Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串

操作流程

  1. 使用File类打开一个文件。
  2. 通过字节流或字符流的子类,指定输出位置。
  3. 进行读、写操作。
  4. 关闭输入、输出。

演示字节流的使用

package javaRevise.io;

import java.io.*;

/**
 * @author WuYongheng
 * @date 2021/12/4
 * @description 演示字节流的使用
 */
public class InputStreamTest1 {
    public static void main(String[] args) throws IOException {
        File f = new File("D://aa.txt");
        OutputStream out = new FileOutputStream(f);//如果文件不存在会自动创建
//        开启追加模式 append:true
//        OutputStream out = new FileOutputStream(f,true);
        String str = "Hello Java";
        byte[] a = str.getBytes();  //因为是字节流,所以要转化成字节(byte)数组进行输出
        out.write(a);
        out.close();
        // 写完之后进行读操作
        InputStream in = new FileInputStream(f);
        byte[] b = new byte[20];
        int len = in.read(b);
        in.close();
        System.out.println("读取文件内容输入到控制台:");
        System.out.println(new String(b, 0, len));
    }
}

 

演示字符流的使用

package javaRevise.io;

import java.io.*;

/**
 * @author WuYongheng
 * @date 2021/12/4
 * @description 演示字符流的使用
 */
public class InputStreamTest2 {
    public static void main(String[] args) throws IOException {
        File f = new File("D://bb.txt");
        Writer out = new FileWriter(f);
        String str = "Hello 这是字符流";
        out.write(str);
        out.close();
        // 写完之后进行读操作
        Reader in = new FileReader(f);
        char[] c = new char[20];
        int len = in.read(c);
        in.close();
        System.out.println("读取文件内容输入到控制台:");
        System.out.println(new String(c, 0, len));
    }
}

 

 理解关闭操作

        就像我们玩星露谷一样,一天结束之后要睡觉才会提交最新数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值