我有两个不同的数组,它们都包含相同类型的元素。元素从用户输入获得。并且数组可以存储固定大小的元素。
*假设 fisrt one 基本上是一个arrayList,它将用户输入添加到列表中。 第二个 只是一个数组,它也可以从用户输入中获取值。第二个数组的所有元素也包含在第一个数组中,并且该数组的长度小于第一个数组*
现在我要打印一个数组,该数组是 第一个数组 - 第二个数组 的结果。
这是我正在进行的计划。你可以避免这种编码只是为了给我一个理论上的概念。
package issuetracking;
import java.util.*;
public class IssueTrackingObject {
ArrayList<String> crIss = new ArrayList<String>();
Scanner input = new Scanner(System.in);
boolean crIss_bool;
int numOfSolvedIss;
private String[] solvedIss;
//lets user create some issues and add them into an arrayList
public void createIssue() {
System.out.println("Enter 5 issues: ");
for (int i = 0; i < 5; i++) {
System.out.println("Issue " + (i + 1 + ": "));
crIss_bool = crIss.add(input.nextLine());
}
}
//Let user mark some issues as solved (which are already in the list that the user has just created)
public void solvedIssue() {
System.out.println("How many solved issue you have(Must be less than 5): ");
numOfSolvedIss = input.nextInt();
solvedIss = new String[numOfSolvedIss];
for (int k = 0; k < numOfSolvedIss; k++) {
System.out.print("Enter solved issue(REMEMBER THAT THE SOLVED ISSUE MUST BE FROM ONE OF THEM YOU ALREADY HAVE CREATED)no. " + (k + 1) + ": ");
solvedIss[k] = input.next();
}
}
public void printUnsolvedIssue() {
//print out the elements of createIssue() that doesn't belong to the solvedIssue()
}
答案 0 :(得分:0)
您可以使用这样的简单解决方案:
for (String solved : solvediss) {
if (solved != null) crIss.remove(solved);
}
这将从列表中删除阵列中的所有String
。
当然,你也可以这样做。
crIss.removeAll(Arrays.asList(solvediss));
答案 1 :(得分:0)
遍历你的第二个数组并使用arraylist中的remove方法从第一个数组中删除第二个数组的每个元素。
for (int i = 0; i < solvedIss.length; i++) {
crIss_bool = crIss.remove(solvedIss[i]);
}
答案 2 :(得分:0)
在这种情况下,删除元素可能是最简单的方法,但它会导致原始列表发生变化。
如果您不希望对原始列表进行任何破坏性修改,可以执行以下简单搜索。
for (String issue : crIss) {
bool isUnSolved = true;
for (String solvedIssue : solvedIss) {
if (issue.equals(solvedIssue)) {
isUnSolved = false;
break;
}
}
if (isUnSolved) {
// Print the 'issue' or do whatever you want to do with it.
}
}
希望这有帮助。
祝你好运。