JAVA 集合(浅层)、IO流

集合

一、集合的作用

数组本身有一旦初始化容量不能改变;数组中元素数据类型必须一致,只能通过下标获取对应的数据 而下标只能int类型等缺点。为了弥补这些不足,从而设定了集合。

集合类:就是一个可以自动扩容的容器,可以存放各种引用类型。

泛型集合:就是在构造集合时使用<>标明集合中存放的数据类型,该类型只能是引用类型。

二、Java集合框架的主要接口和类

1. 线性集合:

Collection:

顶级接口,定义了集合中常用的方法

1. List:

有序集合(添加顺序与读取顺序一致),其中的内容可以重复

List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");

ArrayList:

基于数组,在随机访问时效率较高,ArrayList完全实现了List中的方法。

LinkedList:

基于链表,在插入和删除时效率较高,LinkedList额外添加了操作首尾的六个方法。

2. Set:

无序集合(添加的顺序与读取的顺序不一致),其中的内容不能重复

Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 重复元素不会被添加进去

HashSet:

根据hash算法进行数据存放,没有下标,底层使用的HashMap

2. 键值对集合:

Map:

键值相对应的集合,每个键最多对应一个值。

Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Cherry", 3);

HashMap:

key不能重复,key重复则value被覆盖,key的值可以为null,有且只有一个。

IO流

在Java中,IO流(Input/Output streams)是用于处理输入和输出数据的重要机制。

一、Java IO流的分类:

根据流向不同分为输入流(把硬盘中的输入读入到程序中)和输出流(把程序中的数据写入到硬盘)。根据读取的内容分为字节流和字符流。

字节流(Byte Streams)

  • InputStream:用于从各种数据源(如文件、网络连接)读取字节数据。
  • OutputStream:用于向各种目的地(如文件、网络连接)写入字节数据。
// 示例:使用字节流读写文件
InputStream inputStream = new FileInputStream("input.txt");
OutputStream outputStream = new FileOutputStream("output.txt");

字符流(Character Streams)

  • Reader:用于从各种数据源读取字符数据。
  • Writer:用于向各种目的地写入字符数据。
// 示例:使用字符流读写文件
Reader reader = new FileReader("input.txt");
Writer writer = new FileWriter("output.txt");

二、主要特点和用途

  • 缓冲机制:Java IO流支持缓冲机制,能够提高读写效率,特别是在处理大文件时尤为重要。

  • 字节与字符的转换:Java提供了字符流和字节流之间的桥梁类(如 InputStreamReaderOutputStreamWriter),方便进行字节到字符的转换。

  • 文件操作:可以通过IO流读取和写入文件,包括文本文件和二进制文件。

  • 网络通信:可以使用IO流进行网络通信,通过Socket类配合字节流或字符流实现数据传输。

  • 序列化:Java IO流支持对象的序列化和反序列化,能够方便地将对象转换为字节流进行持久化存储或网络传输。

三、使用示例

下面是一个简单的示例,演示了如何使用字符流读取文件内容并输出到控制台:

import java.io.*;

public class ReadFileExample {
    public static void main(String[] args) {
        try (Reader reader = new FileReader("input.txt");
             BufferedReader bufferedReader = new BufferedReader(reader)) {

            String line;
            while ((line = bufferedReader.readLine()) != null) {
                System.out.println(line);
            }
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这个示例使用了 FileReaderBufferedReader 类来逐行读取文本文件中的内容,并将每行内容输出到控制台。

总结来说,Java的IO流提供了灵活、高效的数据读写方式,能够满足各种输入输出的需求,是Java编程中不可或缺的基础组件之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值