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

Java比较arraylist中数组的元素

Java比较arraylist中数组的元素

繁华开满天机 2022-07-14 17:35:11
我正在尝试将输入与数组列表中的值进行比较。public compare(number)前任; 我有一个数组列表:[100,1102,14051,1024, / 142,1450,15121,1482,/ 141,1912,14924,1001] // the / represents each entry数组的每个索引都代表我程序中的一个唯一属性。例如索引 0 表示user id,索引 1 表示room number等。如果我这样做arraylist.get(2),它会返回第二个数组(142,1450,15121,1482)。我正在尝试与number每个数组中的第二个元素进行比较。所以说我运行这个compare(1102),我希望它遍历每个数组中的每个 [1],如果该索引处有匹配项,则返回 true。所以我希望它比较“数字”(1102)和每个第一个索引元素(1102,1450,1912),因为 1102 在数组列表中,所以返回 true我一直在四处寻找,但找不到如何实现这一点,或者以正确的方式提出问题
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

Stream API 可以做到这一点。


public class MyCompare 

{

    private static Optional<Integer> compare(Integer valueToCompare)

    {

        Optional<Integer[]> matchingArray = listToCompare.stream()

                .filter(eachArray -> eachArray[1].equals(valueToCompare))

                .findFirst();


        if(matchingArray.isPresent())

        {

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

            {

                if(listToCompare.get(i).equals(matchingArray.get()))

                {

                    return Optional.of(i);

                }

            }

        }


        return Optional.empty();

    }


    private static List<Integer[]> listToCompare = new ArrayList<>();


    public static void main(String[] args)

    {

        listToCompare.add(new Integer[] { 100, 1102, 14051, 1024 });

        listToCompare.add(new Integer[] { 142, 1450, 15121, 1482 });

        listToCompare.add(new Integer[] { 141, 1912, 14924, 1001 });


        Optional<Integer> listIndex = compare(1102);

        if(listIndex.isPresent())

        {

            System.out.println("Match found in list index " + listIndex.get());

        }

        else

        {

            System.out.println("No match found");

        }

    }

}

在列表索引 0 中找到匹配项


查看完整回答
反对 回复 2022-07-14
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

遍历您的列表并每隔一个元素进行比较:


public static boolean compare (int number){

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

         if(number == arraylist.get(i)[1]){

            return true;

          }

     }

    return false;

 }


查看完整回答
反对 回复 2022-07-14
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

直接的方法是使用增强的 for 循环:


for (int[] items : list) {

    // do your checking in here

}

更高级但更优雅的方法是使用流:


list.stream()       // converts the list into a Stream.

    .flatMap(...)   // can map each array in the list to its nth element.

    .anyMatch(...); // returns true if any value in the stream matches the Predicate passed.

流 API:https ://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html


查看完整回答
反对 回复 2022-07-14
  • 3 回答
  • 0 关注
  • 165 浏览

添加回答

举报

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