当前位置: 首页 > 知识库问答 >
问题:

Java比较数组列表中数组中的元素

白烨煜
2023-03-14

我试图将输入与arraylist中的值进行比较。

public compare(number)

前任;我有一个arraylist:

[100,1102,14051,1024, / 142,1450,15121,1482,/ 141,1912,14924,1001] // the / represents each entry

数组的每个索引在我的程序中代表一个唯一的属性。e、 g索引0代表用户id,索引1代表房间号等。如果我做数组列表。get(2)返回第二个数组(1421450151211482)

我正在尝试将number与每个数组中的第二个元素进行比较。所以假设我运行这个比较(1102),我希望它遍历每个数组中的每个[1],如果该索引匹配,则返回true。

因此,我希望它将'number'(1102)与每个第一个索引元素(110214501912)进行比较,因为1102在arraylist中,所以返回true

我一直在寻找周围和找不到如何实现这一点或字的问题在正确的方式

共有3个答案

祁正浩
2023-03-14

反复浏览列表,每秒钟比较一个元素:

public static boolean compare (int number){
    for( int i = 0; i<arraylist.size(); i++){
         if(number == arraylist.get(i)[1]){
            return true;
          }
     }
    return false;
 }
姬英耀
2023-03-14

直接的方法是使用增强的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

韶弘壮
2023-03-14

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中找到匹配项

 类似资料:
  • 问题内容: 为什么m和t都是假的?比较Java中2个数组的正确方法是什么? 问题答案: 使用Arrays.equals方法。例:

  • 我必须将元组与元组列表进行比较,如果整数小于列表中的任何元组,则返回True。例如,如果我有将返回True,因为单独元组(“番茄”,10,5)中的整数比列表中的元组(“橙色”,11,6)小,但是如果我有将返回False。 我试试这个 但不工作时,它应该返回假,我不知道为什么? 注意:字符串对于这个问题并不重要,我必须忽略它。

  • 我不能更改数组,它在每个元素中存储一个线程,所以我宁愿尽可能简单地避免损坏线程的内容(线程是同步化的,并使用ReentrantLock--所以问题只是关于数组)。 我想让这个for循环变得简单: 让我把它当成一个循环数组。我想过使用mudolo操作来实现这一点,但这也不起作用。以下是我尝试的:

  • 我正在尝试编写一个日历。我将我的约会保存在另一个ArrayList中的两个不同的ArrayList中。 字符串(Subject,Place,People)进入另一个ArrayList=arstr中的第一个ArrayList 整数(Date和Time)进入另一个ArrayList=arInt中的第二个ArrayList 当我创建约会时,我希望根据日期对其进行排序。所以如果我想添加一个新的约会,它应该

  • 问题内容: 在Java中工作,假设我有两个对象,这要归功于,我知道它们都是数组。进一步说,我想将这两个数组相互比较- 可能使用。有没有一种优雅的方法可以做到这一点,而无需借助详尽的if / else树来弄清楚需要使用哪种口味?我正在寻找比这更令人讨厌的东西: 问题答案: 您可以使用反射。 反射仅用于在运行时找到正确的方法,而不会引起您的回避。实际方法应该运行得很快。 显然,生产版本需要更强大的异常

  • 数组相等的条件不仅要求数组元素的个数必须相等,而且要求对应位置的元素也相等。Arrays 类提供了 equals() 方法比较整个数组。语法如下: 其中,arrayA 是用于比较的第一个数组,arrayB 是用于比较的第二个数组。 例 1 下面代码演示 Arrays 类的 equals() 方法的使用。 上述代码中定义 3 个数组,分别为 score1、score2 和 score3。第一个数组直