作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我要学习树,但我决定先学习链表。在尝试学习 LinkedList 时,我发现了一项作业,要求我创建一个链接列表,人们去酒吧(有年龄),并扔掉任何 18 岁以下的人。
我在从链接列表中删除人员时遇到了很大的问题。我能找到的每个教程都在使用节点,而我只是对使用 LinkedList (something) = new LinkedList(); 感兴趣
例如,pp.next();不适合我。
输出含义:
排队中有一个年龄(数字)的人。
这就是我希望程序工作的方式:
我打印出:排队中有一个年龄(数字)的人。我删除了18岁以下的人(我想在removeAlder方法中删除它)。我再次打印出来:队列中有一个年龄(数字)的人(18岁以下的人都被删除)。
这是我的代码。
package polkø;
import java.util.*;
public class Polkø {
public static void main(String[] args) {
Random generator = new Random();
int folk = generator.nextInt(60);
folk = folk + 15;
personer objekt = new personer(folk);
objekt.getAlder();
}
}
package polkø;
import java.util.*;
public class personer {
LinkedList pp = new LinkedList();
Random generator2 = new Random();
personer(int folk){
for (int i = 1; i < folk; i++){
int alder = generator2.nextInt(50);
alder = alder + 10;
pp.add(alder);
}
}
public void getAlder(){
for (int i = 1; i < pp.size(); i++){
System.out.print("Det står en person i køen som er: ");
System.out.print(pp.get(i));
System.out.println(" År gammel");
}
}
public void removeAlder(){
for (int i = 1; i < pp.size(); i++){
//I need something simple here that can remove the people under 18.
}
}
}
这是迄今为止的打印输出:
Det står en person i køen som er: 30 År gammel
Det står en person i køen som er: 33 År gammel
Det står en person i køen som er: 13 År gammel
Det står en person i køen som er: 37 År gammel
Det står en person i køen som er: 33 År gammel
Det står en person i køen som er: 45 År gammel
Det står en person i køen som er: 15 År gammel
Det står en person i køen som er: 54 År gammel
Det står en person i køen som er: 20 År gammel
Det står en person i køen som er: 46 År gammel
Det står en person i køen som er: 20 År gammel
Det står en person i køen som er: 10 År gammel
Det står en person i køen som er: 38 År gammel
Det står en person i køen som er: 54 År gammel
Det står en person i køen som er: 31 År gammel
Det står en person i køen som er: 18 År gammel
Det står en person i køen som er: 10 År gammel
Det står en person i køen som er: 16 År gammel
Det står en person i køen som er: 43 År gammel
Det står en person i køen som er: 53 År gammel
Det står en person i køen som er: 38 År gammel
Det står en person i køen som er: 43 År gammel
Det står en person i køen som er: 33 År gammel
Det står en person i køen som er: 15 År gammel
Det står en person i køen som er: 34 År gammel
Det står en person i køen som er: 53 År gammel
Det står en person i køen som er: 38 År gammel
Det står en person i køen som er: 59 År gammel
Det står en person i køen som er: 28 År gammel
Det står en person i køen som er: 32 År gammel
Det står en person i køen som er: 33 År gammel
最佳答案
如果你想在迭代列表的同时修改它,你会遇到问题,因为索引突然出错了。如果删除一个人,下一个人的索引不是 i+1,而是突然 i。
例如:
你在 i = 20 处,这个人是 12。你将其删除。突然间,列表变短了,如果您在 21 号处继续,您将忽略 20 号处的人(之前是 21 号)。
解决方案:使用迭代器。
Iterator<Integer> iterator = pp.iterator();
while(iterator.hasNext()) {
Integer age = iterator.next();
if (... your test here) {
iterator.remove(); // This removes the age from the list AND takes care of updating it, so that the next next() call will work correctly
}
}
哦,顺便说一句:类是大写的。生成好的代码而不仅仅是工作代码永远不会太早;-)
关于java - 如何从 LinkedList pp = new LinkedList(); 中删除整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31518307/
我是一名优秀的程序员,十分优秀!