为了账号安全,请及时绑定邮箱和手机立即绑定

检查 arraylist 是否仅具有来自预定义值范围的值

检查 arraylist 是否仅具有来自预定义值范围的值

catspeake 2022-01-12 10:04:44
我有一个数组列表,它的字符串值也可能重复,那里没有问题。此外,我有这些值的预定义范围/选项,这是允许的。具有允许值的数组列表,但如果我的问题得到解决,我可以使用任何数据结构。我只需要一种方法来确保我的arraylist 没有外来值,如果是这样,它会指出哪个索引号如果有故障,或者如果有多个则有故障。我已经尝试过 .contains() 方法和许多其他方法,但我无法获得错误索引位置。我准备好使用任何数据结构或任何方法,但需要那个错误索引号。仅供参考,我正在使用 java 并且 arraylist 具有来自 ResultSet 的值。
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

我同意总有更好的解决方法,但我以某种方式解决了这个问题(请忽略方法,因为答案正是我想要的)。

我有 2 个数组列表 A 和 B,我想知道 A(允许 + 错误值)的哪个元素不在 B(允许值)中,最 重要的是在哪个位置。

我所做的是:

--> 制作了一个数组列表 A_temp 即 A 的副本。(与 A 相同的元素)。

--> 使用 A.removeAll(B)。
这使我的 A 只包含错误值(这是我想要指出的)。

--> 最后,我打印出 A_temp.indexOf(A.get(index))。


查看完整回答
反对 回复 2022-01-12
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

这可能是你想要的。它可能不是执行此操作的优化方式,但您可以从中获得一些想法


import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;


public class A {


    public static void main(String[] args) {

        List<String> valuesList = Arrays.asList("aa", "bb", "bb", "bb", "cc", "dd", "ee", "ff", "gg");

        List<String> correctValues = Arrays.asList("bb", "dd", "ff");


        List wrongPositions = getPositions(valuesList, correctValues);

    }


    static List getPositions(List<String> values, List<String> correctValues) {


        List<Integer> numbers = new ArrayList<>();

        for (int i = 0; i < values.size(); i++) {

            numbers.add(i);

        }


        List<Integer> correctPositions = new ArrayList<>();


        for (String correctValue : correctValues) {

            while (values.indexOf(correctValue) > -1) {

                correctPositions.add(values.indexOf(correctValue));

                values.set(values.indexOf(correctValue), "SomeValueNotContainingInList");

            }

        }


        numbers.removeAll(correctPositions);

        return numbers;

    }

}


查看完整回答
反对 回复 2022-01-12
?
呼唤远方

TA贡献1856条经验 获得超11个赞

您可能可以使用 set 执行此任务(基于您的带有字符串的评论示例):


List <String> all = ...

Set <String> allowed = ..


for(String current : all){

   if(!allowed.contains(current){

      // out of range

   }

}

这种方法比利用一组数据结构中的优化搜索线性迭代两个列表的方法更快。


查看完整回答
反对 回复 2022-01-12
  • 3 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信