叨叨两句
- 刷题真的很爽!
- 刷完题一定要把值得记录的题记录下来,方便复习,也可以积累成就感,便于坚持!
题13: 文件读写去重排序
题目要求
/root/bootstrap/result/备用1/Exam-04/extra/itcast.txt文件中存储了多行数字,
读取每行的数字,将结果打印到控制台。
将文件中读取出的数字进行去重操作,将结果打印到控制台。
将去重后的数字按照由小到大的方式进行排列,并将排列后的结果打印到控制台。
将排序后的结果按行存储,按行存储,按行存储(重要事情说三遍,需要换行)到/root/bootstrap/result/备用1/Exam-04/extra/itcast.avi文件中。
提示:
逻辑在Demo类的main函数中实现;
例如/root/bootstrap/result/备用1/Exam-04/extra/itcast.txt中按行存储了 9,2,5,2,6,5,4,9
打印的结果:
第一行--> 初始: 9 2 5 2 6 5 4 9
第二行--> 去重: 9 2 5 6 4
第三行--> 排序: 2 4 5 6 9
方法一:TreeSet去重+排序
package com.heima_IO;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.TreeSet;
public class Demo {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(new File("C:\\Users\\Dell xps\\Desktop\\itcast.txt")));
TreeSet<Integer> ts = new TreeSet<>();
String line;
String startStr = "初始:";
while((line = br.readLine()) != null) {
ts.add(Integer.parseInt(line));
startStr += line + " ";
}
System.out.println(startStr.trim());
String distinctStr = "去重:";
String sortStr = "排序:";
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("C:\\Users\\Dell xps\\Desktop\\itcast_copy.txt")));
for(int i : ts) {
distinctStr += i + " ";
sortStr += i + " ";
bw.write("" + i);
bw.newLine();
}
System.out.println(distinctStr.trim());
System.out.println(sortStr.trim());
br.close();
bw.close();
}
}
方法二:HashSet去重 + ArrayList排序
private static void demo01() throws IOException {
//读取文件
BufferedReader br = new BufferedReader(new FileReader(new File("C:\\Users\\Dell xps\\Desktop\\itcast.txt")));
BufferedWriter bw = new BufferedWriter(new FileWriter(new File("C:\\Users\\Dell xps\\Desktop\\itcast_copy.txt")));
//该容器用于字符串去重
HashSet<Character> hs = new HashSet<>();
//初始字符串
String startStr = "初始:";
String line;
//按行取出字符串
while((line = br.readLine()) != null){
//对取出的字符串中的数字进行去重
hs.add(line.charAt(0));
//拼接显示初始状态的字符串
startStr += line.charAt(0) + " ";
}
//去除首尾空格
System.out.println(startStr.trim());
//去重字符串
String distinctStr = "去重:";
for(char c : hs) {
distinctStr += c + " ";
}
//去除首尾空格
System.out.println(distinctStr.trim());
//排序
ArrayList<Integer> list = new ArrayList<>();
for(char c : hs) {
list.add(Integer.parseInt("" + c));
}
Collections.sort(list);
//打印排序字符串
String sortStr = "排序:";
for(int i : list) {
sortStr += i + " ";
bw.write(i + "");
bw.newLine();
}
System.out.println(sortStr.trim());
br.close();
bw.close();
}
题14:标记思想典型应用
关注点
标记思想
题目描述:
书写一个类,类名为Itheima;
类中有一个方法,方法名either24;
给定一个整型数组,如果数组中含有两个相邻的数字2,或者是两个相邻的数字4,就返回true,否则返回false,
如果数组既含有两个相邻的数字2又含有两个相邻的数字4,就返回false。
例如:([1, 2, 3, 2, 2, 4, 4]) -> false
提示:
方法调用 期望值
either24([1,2,2]) true
either24([4,4,1]) true
either24([4,4,1,2,2]) false
public class Itheima {
public boolean either24(int[] arr){
//初始化标记
boolean has22 = false;
boolean has44 = false;
//符合条件,改变标记状态
for(int i = 0; i < arr.length - 1; i++){
if(arr[i] == 2 && arr[i + 1] == 2){
has22 = true;
}
if(arr[i] == 4 && arr[i + 1] == 4){
has44 = true;
}
}
//通过标记来判断
if(has22 && has44){
return false;
} else if((has22 && !has44) || (!has22 && has44)){
return true;
} else {
return false;
}
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。