java - 如何在 java 中使用 Stacks 和 Queue 制作闪存卡
问题描述
我不确定如何实现堆栈和队列你能告诉我这个类是否以正确的方式实现它。因为它会执行 LIFO 和 FIFO,因为它运行良好,但我只是想确定一下。你能告诉我用arraylist与堆栈和队列实现它的区别吗?谢谢
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
public class Deck {
private File file;
private String fileName = "Untitled";
private boolean Modified;
private boolean TestRunning;
private int numCorrect;
private int numWrong;
static Queue<QuizCard> quizCardList = new LinkedList<>();
static Queue<QuizCard> quizCardList2 = new LinkedList<>();
static int curr_size;
Deck()
{
curr_size = 0;
}
static void push(int x)
{
curr_size++;
quizCardList.add((QuizCard) quizCardList);
while (!quizCardList.isEmpty())
{
quizCardList.add(quizCardList.peek());
quizCardList2.remove();
}
// swap the names of two queues
Queue<QuizCard> q = quizCardList;
quizCardList = quizCardList2;
quizCardList2 = q;
}
static void pop(){
if (quizCardList.isEmpty())
return ;
quizCardList.remove();
curr_size--;
}
static QuizCard top()
{
if (quizCardList.isEmpty())
// return -1;
return quizCardList.peek();
return null;
}
static int size()
{
return curr_size;
}
/** addQuizCard - creates and adds a QuizCard to quizCardList */
void addQuizCard(String q, String a){
if(q.length() == 0){
q = " ";
}
if(a.length() == 0){
a = " ";
}
quizCardList.add(new QuizCard(q, a));
}
/** readFile - loads in the data from a saved deck into quizCardList */
void readFile(String fileLocation){
file = new File(fileLocation);
setFileName(file.getName());
assert file.canRead();
try(BufferedReader input = new BufferedReader(new FileReader(file))){
int letterNumber;
StringBuilder dataToParse = new StringBuilder();
while((letterNumber = input.read()) != -1){
dataToParse.append((char) letterNumber);
}
}catch(IOException ioEx){
ioEx.printStackTrace();
}
}
void save(String fileLocation){
file = new File(fileLocation);
assert file.canWrite();
try (BufferedWriter output = new BufferedWriter(new FileWriter(file))) {
for(QuizCard quizCard : quizCardList){
}
}catch(IOException ioEx){
ioEx.printStackTrace();
}
}
void shuffle(){
Collections.shuffle((List<?>) quizCardList);
}
String getFileLocation(){
return file.getAbsolutePath();
}
String getFileName(){
return fileName;
}
boolean getIsModified(){
return Modified;
}
boolean getIsTestRunning(){
return TestRunning;
}
int getNumCorrect(){
return numCorrect;
}
int getNumWrong(){
return numWrong;
}
List<QuizCard> getQuizCardList(){
return (List<QuizCard>) quizCardList;
}
void setFileName(String fileName) {
if(fileName.contains(".")){
fileName = fileName.split("\\.")[0];
}
this.fileName = fileName;
}
void setIsModified(boolean newValue){
Modified = newValue;
}
void setIsTestRunning(boolean newValue){
TestRunning = newValue;
}
void setNumCorrect(int newValue){
numCorrect = newValue;
}
void setNumWrong(int newValue){
numWrong = newValue;
}
}
解决方案
推荐阅读
- java - 在不阻塞 UI 线程的情况下将长文本写入 TextView
- java - 用于安全的 Oracle 增量校验和加密
- javascript - 状态变量不可预测地变化 - ReactJS
- python - 时期、批量大小和模型复杂度
- jsf - 如何限制用户在可编辑的 p:selectonemenu 下拉菜单中仅输入数字
- sql-server - SQL重复存在子查询
- javascript - 未捕获的 ReferenceError:未定义目标 (SmoothScroll)
- r - Keras 模型 R 中自定义函数的名称
- drop-down-menu - Blazor 选择下拉菜单通过代码设置活动值
- c++ - 在 c++ 中用 new 分配一个结构矩阵