gpt4 book ai didi

java - 简单比较java中的2个数组

转载 作者:行者123 更新时间:2023-11-30 05:51:38 29 4
gpt4 key购买 nike

我想做的是让一个数组将自己与另一个数组进行比较,如果它在比较数组中找到重复项,它将跳过以下语句,这就是我目前得到的

for (int count=0; count < userId.length; count++) {
for (int integer=0; userId[count] != excluded[integer]; integer++) {
// The arrays hold either string or Long variables in them
// Continued code to finish off after checking array
}
}

我想做的是尽可能让它发挥作用,但同时要尽可能简单。如果代码实际上根本不清楚我想比较两个数组 userId 和 excluded,我想要的是如果数组中的任何 userId 值与 excluded 中的任何匹配,那么就像数组状态一样我想将它们排除在外列表。

编辑:运行时如果 (excluded[counts].contains(user))
我得到了我想要的特定输出“太棒了!”
但我现在遇到的问题是,如果我像 (!excluded[counts].contains(user))<br> 一样运行 if我得到排除的值,然后一些,许多值重复减去那些显示
示例:

String[] userId = new String [] { "10", "15", "17", "20", "25", "33", "45", "55", "77" }
String[] excluded = new String[] { "15", 20", "55", "77" }

然后我开始循环检查数组

int count=0;
for (String user : userId) {
for (int counts=0; counts < excluded.length; counts++) {
if (!excluded[counts].contains(user)) {
System.out.println("UID = " + userID[count]);
}
count++

那个 !excluded 仍然会显示我不想显示的 userId 实例,所以它仍然显示“UID = 15”,即使我希望它排除它,它确实如此,但只显示一次看了 4 次我看了 3 次。

最佳答案

只需使用集合框架即可。假设您的 ID 是 int 值:

int[] excluded = ... ;
int[] userIds = ... ;
Set<Integer> excludedIds = new HashSet<Integer>(Arrays.asList(excluded));
for (int userId : userIds) {
if (excluded.contains(userId))
continue;
// Do something with ID
}

您也可以这样做,但这假设您不关心 userIds 数组中的重复项:

int[] excluded = ... ;
int[] userIds = ... ;
Set<Integer> excludedIds = new HashSet<Integer>(Arrays.asList(excluded));
Set<Integer> userIdSet = new HashSet<Integer>(Arrays.asList(userIds));
userIdSet.removeAll(excludedIds);
for (int userId : userIdSet) {
// Do something with ID
}

这是更好的优化,但不是特别必要,除非您有很多 ID。你的算法是 O(n) = n2,我的算法是 O(n) = n

关于java - 简单比较java中的2个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12502023/

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