gpt4 book ai didi

java - 数据结构在排序有限的项目时遇到麻烦

转载 作者:行者123 更新时间:2023-12-01 04:20:53 25 4
gpt4 key购买 nike

我正在研究 Java 中的此类数据结构,我弄清楚如何对数组或对象上的项目进行排序。我想要一些单词按特定顺序排列,我可以使用 Bufferedreader HashMap、ArrayList。我想要做的是在读取前 42 行后的任何时候,如果某行为空白(即长度为 0 的字符串),则输出该行之前 42 行出现的行。另外,如何更改此程序以一次一行读取整个输入,然后输出偶数行(从第一行第 0 行开始),然后输出奇数行。我发布了我所拥有的代码远。

public static void doIt(BufferedReader r, PrintWriter w) throws IOException {

ArrayList<String> s= new ArrayList<String>();

String line;
int n = 0;
while ((line = r.readLine()) != null) {
s.add(line);
n++;
}
Collections.sort(s);

Iterator<String> i = s.iterator();
while (i.hasNext()) {
w.println(i.next());
}
}


public static void main(String[] args) {
try {
BufferedReader r;
PrintWriter w;
if (args.length == 0) {
r = new BufferedReader(new InputStreamReader(System.in));
w = new PrintWriter(System.out);
} else if (args.length == 1) {
r = new BufferedReader(new FileReader(args[0]));
w = new PrintWriter(System.out);
} else {
r = new BufferedReader(new FileReader(args[0]));
w = new PrintWriter(new FileWriter(args[1]));
}
long start = System.nanoTime();
doIt(r, w);
w.flush();
long stop = System.nanoTime();
System.out.println("Execution time: " + 10e-9 * (stop-start));
} catch (IOException e) {
System.err.println(e);
System.exit(-1);
}
}

最佳答案

我不确定我是否正确理解你的问题,但我希望这可以帮助:

要打印空行之前 42 行出现的行,您可以只保留一个计数器,一旦找到长度为零的行,就输出索引为 counter - 42 的行(我可能在这里有一个错误)

     int n = 0;
while ((line = r.readLine()) != null) {
if (n > 42 && s.length == 0)
System.out.println(s[n-42]);
s.add(line);
n++;
}

要先打印偶数行,然后打印奇数行,您可以尝试一次读取两行,将第一行保存到 ArrayList 中,将第二行保存到另一个数组中。

最后,一个将具有奇数行,一个将具有偶数行。

最后还有一个注释,而不是使用这个:

 Iterator<String> i = s.iterator();
while (i.hasNext()) {
w.println(i.next());
}

你可以简单地使用这个:

for( String line : s)
System.out.println(line)

关于java - 数据结构在排序有限的项目时遇到麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18938758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com