java - 如何使用 Arrays.asList() 对数组执行 List 函数

标签 java arrays list

提示:给定一个整数数组,如果该数组包含 2 旁边的 2 或 4 旁边的 4,但不是两者都包含,则返回 true。

我只使用数组而不使用列表方法来完成此操作,但我想以这种方式进行练习。这就是我所拥有的,Arrays.asList() 让我有些悲伤。

public boolean either24(int[] nums) 
{
    List list = Arrays.asList(nums);
    boolean twos = list.containsAll(Arrays.asList(2, 2));
    boolean fours  = list.containsAll(Arrays.asList(4, 4));
    return (twos || fours) && !(twos && fours);
}
Expected    Run     
either24({1, 2, 2}) → true  true    OK      
either24({4, 4, 1}) → true  true    OK      
either24({4, 4, 1, 2, 2}) → false   false   OK      
either24({1, 2, 3, 4}) → false  false   OK      
either24({3, 5, 9}) → false false   OK      
either24({1, 2, 3, 4, 4}) → true    false   X       
either24({2, 2, 3, 4}) → true   false   X       
either24({1, 2, 3, 2, 2, 4}) → true false   X       
either24({1, 2, 3, 2, 2, 4, 4}) → false false   OK      
either24({1, 2}) → false    true    X       
either24({2, 2}) → true true    OK      
either24({4, 4}) → true true    OK      
either24({2}) → false   true    X       
either24({}) → false    false   OK   

更新:部分问题是使用 int 而不是 Integer。新代码:

public boolean either24(int[] nums) 
{
    Integer[] nums2 = new Integer[nums.length];
    for(int i = 0; i < nums.length; i++)
        nums2[i] = nums[i];
    List list = Arrays.asList(nums2);
    boolean twos = list.containsAll(Arrays.asList(2, 2));
    boolean fours  = list.containsAll(Arrays.asList(4, 4));
    return (twos || fours) && !(twos && fours);
}

最佳答案

containsAll() 不检查两个元素是否相邻。它只检查元素是否存在于列表中。您需要遍历数组并检查相邻元素

        int [] nums = new int [] {1,2,3,4,2,3,2,2,1,-4,4,4};
        int len = nums.length;
        for (int i = 0; i < len - 1 ; i++)
        {
            if((nums[i] == nums[i+1]) && (nums[i] == 2 || nums[i] == 4))
            {
                System.out.println("Yes");
            }
        }

上面的代码片段并没有给你答案。您仍然需要处理问题的 但不是两个 部分,我将留给您。

关于java - 如何使用 Arrays.asList() 对数组执行 List 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16075600/

相关文章:

Java 在不调试或打印时卡住

c - 如何访问双指针类型参数作为二维数组?

c# - 在 C# 中获取子数组作为引用

java - 有没有像数组一样工作的列表?

java - IOException:从java中的控制台读取时出现流关闭错误

java - 如何检查 Java 字符串是否包含 GSM 扩展字符(非 Unicode)

java - SimpleNLG:我们如何指定数量?

javascript - Promise 在真/假值数组中失败

list - 根据多个包含过滤列表

list - 二郎:头|尾端