首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何对存储在Arraylist...Using Java中的CSV文件进行筛选

在Java中,可以使用以下步骤对存储在ArrayList中的CSV文件进行筛选:

  1. 导入所需的Java类:
代码语言:txt
复制
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
  1. 创建一个方法来读取CSV文件并将其存储在ArrayList中:
代码语言:txt
复制
public ArrayList<String[]> readCSV(String filePath) {
    ArrayList<String[]> data = new ArrayList<>();
    try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
        String line;
        while ((line = br.readLine()) != null) {
            String[] row = line.split(",");
            data.add(row);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return data;
}

此方法将返回一个ArrayList,其中每个元素都是一个String数组,表示CSV文件中的一行数据。

  1. 创建一个方法来筛选ArrayList中的数据:
代码语言:txt
复制
public ArrayList<String[]> filterData(ArrayList<String[]> data, String filterColumn, String filterValue) {
    ArrayList<String[]> filteredData = new ArrayList<>();
    int columnIndex = -1;
    for (int i = 0; i < data.get(0).length; i++) {
        if (data.get(0)[i].equals(filterColumn)) {
            columnIndex = i;
            break;
        }
    }
    if (columnIndex != -1) {
        for (int i = 1; i < data.size(); i++) {
            if (data.get(i)[columnIndex].equals(filterValue)) {
                filteredData.add(data.get(i));
            }
        }
    }
    return filteredData;
}

此方法将接收一个存储CSV数据的ArrayList,以及要筛选的列名(filterColumn)和筛选值(filterValue)。它将返回一个新的ArrayList,其中包含满足筛选条件的行数据。

  1. 调用上述方法进行筛选:
代码语言:txt
复制
String filePath = "path/to/your/csv/file.csv";
ArrayList<String[]> data = readCSV(filePath);
String filterColumn = "column_name";
String filterValue = "filter_value";
ArrayList<String[]> filteredData = filterData(data, filterColumn, filterValue);

将"column_name"替换为要筛选的列名,将"filter_value"替换为要筛选的值。filteredData将包含满足筛选条件的行数据。

这是对存储在ArrayList中的CSV文件进行筛选的基本步骤。根据实际需求,你可以进一步扩展和优化这些方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 多线程请求百度接口实现地址转换经纬度

    一、背景 最近,碰到了一个业务,是将数据库中所有的地址信息请求百度接口获取经纬度保存起来。有38万多个地址,想到的方案就是查出所有的地址字段加上主键字段,然后导出csv文件,读取这个文件,遍历请求百度api接口,获取经纬度信息,生成一个新的文件,作为一张表导入数据库,使用sql给地址刷一遍经纬度。前面已经写过具体怎么实现了,请查看java实现调用百度接口将大量数据库中保存的地址转换为经纬度,但是由于是单线程效率有点低,20分钟大约跑一万条吧,我需要转换37万,得15个小时左右,太慢了,就想到了可以通过多线程拿到每一条数据请求百度接口,这样速度就上去了,先剧透一下结果,多线程下地址转换经纬度40分钟5万条,大约三个多小时就可以跑完,效率提升了好几倍,这次代码在上一篇的基础上做了一些优化,现在就来看看具体怎么实现吧。

    01
    领券