Java 根据项目数打印数组列表的第n个项目
我有一个Java 根据项目数打印数组列表的第n个项目,java,Java,我有一个数组列表: ArrayList<String> melody = new ArrayList<>(); ArrayList melody=新的ArrayList(); melody包含像“EEAABB”、“AAGDFE”这样的字符串。。。旋律的大小可能会有所不同 现在,根据melody的大小,我想打印出第N个字符串和最后几个字符串 例如: melody有2037个元素:每100个元素打印一次,最后5个元素打印一次 melody有100个元素:每10个元素打印一
数组列表
:
ArrayList<String> melody = new ArrayList<>();
ArrayList melody=新的ArrayList();
melody
包含像“EEAABB”、“AAGDFE”这样的字符串。。。旋律的大小可能会有所不同
现在,根据melody
的大小,我想打印出第N个字符串和最后几个字符串
例如:
melody有2037个元素:每100个元素打印一次,最后5个元素打印一次
melody有100个元素:每10个元素打印一次,最后5个元素打印一次
100和10不需要是固定的数字,它们只是举个例子
我这里的问题是如何根据列表的大小找出应该打印第n个元素
我希望它尽可能具有可伸缩性
我知道如何打印列表中的元素,但我不知道如何确定在屏幕上打印它们的频率(特别是当数组中有少量元素时)。我创建了一个方法,可以打印第x个元素n
,最后y个元素last
整个想法是,将此作为一个方法将允许该过程对给定给它的任何参数都有效
我正在使用的示例是一个充满数字的列表,这样可以更容易地看到这个过程
public static void main(String[] args) {
ArrayList<String> melody = new ArrayList<>();
melody.add("1");
melody.add("2");
melody.add("3");
melody.add("4");
melody.add("5");
melody.add("6");
melody.add("7");
melody.add("8");
melody.add("9");
melody.add("10");
print(melody, 3, 5);
}
private static void print(ArrayList<String> list, int n, int last) {
ArrayList<String> filtered = new ArrayList<>();
int size = list.size();
System.out.println("Every " + n + " elements in the list: ");
for (int i = 0; i < size; i += n) {
String str = list.get(i);
filtered.add(str);
System.out.println(str);
}
System.out.println("The last " + last + " elements excluding every " + n + " elements in the list:");
int count = 0;
for (int i = size - 1; i >= 0; i--) {
String str = list.get(i);
if (!filtered.contains(str)) {
System.out.println(str);
if (++count == last) break;
}
}
}
我们怎么知道?你的作业没有说明如何计算n
?“我这里的问题是如何根据列表的大小确定我应该打印第n个元素。”你必须定义此规则。或者,如果这是一个家庭作业,你需要问你的老师。一般来说,没有固定的方法可以做到这一点。不,没有,我需要自己选择。你可以将其作为一种方法,类似于count(ArrayList list,int n)
。决定n
实际上是什么将取决于调用该方法的人。一个可能的规则是,如果列表的长度小于100,则每10个元素打印一次。如果长度在100到1000之间,则每1000个元素打印一次。如果长度在1000到一百万之间,则每10000个元素打印一次。但这只是无限可能规则的一个例子。你必须选择一个。我们不能告诉你哪一个对你的处境有利。泰最初的想法,我和你的想法很相似。但我意识到最后的项目不能是每n打印出来的项目。(melody.size()%n)能确保吗?melody.size()/n
是多少次n
适合melody
,而melody.size()%n
将是剩余部分。除非我遗漏了什么,否则我不确定这将如何帮助解决问题的第二部分。我已经编辑了我的答案。这当然不是解决这个问题的唯一方法,但可能更容易理解。我将每个n
th元素添加到一个不同的列表filtered
,然后向后循环melody
,打印未在filtered
中的元素。
Every 3 elements in the list:
1
4
7
10
The last 5 elements excluding every 3 elements in the list:
9
8
6
5
3