用Java读取txt中的内容以list的形式将其存储到Redis数据库中,从Redis数据库中读取该随机数串,窗口大小为3,对该随机数串进行滑动窗口最大值运算
时间: 2024-05-09 12:19:34 浏览: 90
首先,我们需要使用Java的IO流读取txt文件中的内容,并将其存储到List中。代码如下:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class FileToRedis {
public static void main(String[] args) {
String filePath = "test.txt"; // txt文件路径
List<String> list = new ArrayList<>(); // 用于存储读取的内容
try {
BufferedReader br = new BufferedReader(new FileReader(filePath)); // 使用BufferedReader读取文件
String line;
while ((line = br.readLine()) != null) { // 逐行读取文件内容
list.add(line); // 将读取的内容添加到List中
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
// 将List中的内容存储到Redis中
// ...
}
}
```
接下来,我们需要使用Java操作Redis数据库,将List中的内容存储到Redis中。代码如下:
```java
import redis.clients.jedis.Jedis;
public class FileToRedis {
public static void main(String[] args) {
String filePath = "test.txt"; // txt文件路径
List<String> list = new ArrayList<>(); // 用于存储读取的内容
try {
BufferedReader br = new BufferedReader(new FileReader(filePath)); // 使用BufferedReader读取文件
String line;
while ((line = br.readLine()) != null) { // 逐行读取文件内容
list.add(line); // 将读取的内容添加到List中
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
// 将List中的内容存储到Redis中
Jedis jedis = new Jedis("localhost", 6379); // 连接到Redis数据库
jedis.select(0); // 选择数据库0
for (int i = 0; i < list.size(); i++) {
jedis.rpush("random_numbers", list.get(i)); // 将List中的内容依次存储到Redis中
}
jedis.close(); // 关闭连接
}
}
```
最后,我们需要从Redis数据库中读取随机数串,并进行滑动窗口最大值运算。代码如下:
```java
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import java.util.List;
public class RedisToMax {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost", 6379); // 连接到Redis数据库
jedis.select(0); // 选择数据库0
List<String> list = jedis.lrange("random_numbers", 0, -1); // 读取Redis中的随机数串
List<Integer> numbers = new ArrayList<>(); // 将随机数串转换为整型列表
for (int i = 0; i < list.size(); i++) {
numbers.add(Integer.parseInt(list.get(i)));
}
int windowSize = 3; // 窗口大小
List<Integer> maxList = new ArrayList<>(); // 用于存储滑动窗口最大值
for (int i = 0; i <= numbers.size() - windowSize; i++) {
int max = Integer.MIN_VALUE;
for (int j = i; j < i + windowSize; j++) {
if (numbers.get(j) > max) {
max = numbers.get(j);
}
}
maxList.add(max); // 将滑动窗口最大值添加到maxList中
}
System.out.println("滑动窗口最大值为:" + maxList);
jedis.close(); // 关闭连接
}
}
```
阅读全文