我正在开发一个Java程序来生成一个随机数组列表,其中包含1-25个整数。然后我需要制作数组的副本并将其存储在单独的位置。虽然我能够完成这些部分,但我在实现以下方法时遇到了困难:
>
存储已删除的所有重复项
这是我到目前为止的计划:
public static void main(String[] args) {
ArrayList <Integer> OgArr = new ArrayList <Integer>();
Random random = new Random();
random.setSeed(System.currentTimeMillis());
int n = 35;
for (int i = 0; i < n; i++)
{
Integer r = 1 + random.nextInt(25);
OgArr.add(r);
}
ArrayList<Integer> copyOfArr = (ArrayList<Integer>) OgArr.clone();
int i = 0;
int leng = copyOfArr.size();
for (i = 0; i < leng - 1; i++) {
int imin = i;
for (int j = i + 1; j < leng; j++) {
if (copyOfArr.get(j) < copyOfArr.get(imin)) {
imin = j;
}
}
Collections.swap(copyOfArr,i,imin);
}
System.out.println(copyOfArr);
}
这个程序执行前两个功能,我已经探索了使用临时数组、for循环和LinkedHashSet。我的努力没有成功,我真的很感激在实施过程中得到帮助。
我无法从你的代码中找出你做任务1和2的“心理模型”是什么。事实上,问题中的相关代码对我来说没有意义。我认为你可能应该扔掉大部分,重新开始。
如果你这么做。。。我建议您首先考虑代码需要做什么。通过编写一些伪代码来向自己解释这一点。然后用Java重写伪代码。
以下是一些提示,可以让你朝着正确的方向思考:
>
您可以使用可选的Iterator.remove
方法在迭代时删除元素。阅读Iterator
的javadoc。
或者,您可以创建一个新列表,并一次复制一个元素,而忽略不应该存在的元素。
您可以使用哈希集
使现代化
既然你真的很挣扎,这里有一些伪代码。阅读它,理解它,然后使用上面的提示将其翻译成工作代码:
set seen = ... // empty set
list duplicates = ...// empty list
list newList = ... // new empty list
for element in originalList {
// Test if 'element' has been 'seen' before
// If no, add 'element' to 'newList' and add `element` to `seen`
// If yes, add 'element' to 'duplicates'
}
正如我之前说过的,找到并阅读javadocs。
最后,解决这个问题的方法不止一种,有些方法比其他方法更有效。但你的目标应该是在尽可能少的帮助下找到一个可行的解决方案。努力做到“工作”和“理解代码”。
结果:[1,2,3,3,3,4,4][1,2,3,3,3,4,4]
问题内容: 如何从ArrayList中删除重复的元素? 问题答案: 如果你不想在中添加重复项,则应考虑为什么要使用允许重复项的。删除重复元素的最简单方法是将内容添加到中(不允许重复),然后将其添加Set回中ArrayList: 当然,这会破坏中的元素顺序。
问题内容: 我有一个字符串数组列表,并在其中添加了一些重复值。我只想删除那个重复的值,那么如何删除它。 在这个例子中我有一个主意。 但是有没有足够的方法来删除该重复表格列表。没有使用For循环?我可以通过使用HashSet或其他方式来做到这一点,但只能使用数组列表。想对此提出您的建议。谢谢您的提前答复。 问题答案: 您可以从列表中创建一个。在将包含每个元素只有一次,在相同的顺序。然后从创建一个新的
问题内容: 我有一个,并且我想从中删除重复的字符串。我怎样才能做到这一点? 问题答案: 如果你不想在中添加重复项,则应考虑为什么要使用允许重复项的。删除重复元素的最简单方法是将内容添加到中(不允许重复),然后将其添加回中: 当然,这破坏了中元素的顺序。
我有一个arraylist,它包含一对整数(例如int i,int j)。但它可能包含重复对(如(int i,int j)和(int j,int i))。现在如何在O(n)时间复杂度中去除重复。
问题内容: 这个问题已经在这里有了答案 : 是什么导致java.lang.ArrayIndexOutOfBoundsException,如何防止它发生? (25个答案) 4年前关闭。 所以我有另一个带有main方法的类,在该类中我调用createNumbers(),createColours(),createBalls()。当我运行程序时,我在numere.remove(nr)处得到一个Index