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

如何使用rrays.asList()在数组上执行List函数

曾承弼
2023-03-14

提示:给定一个整数数组,如果该数组在2旁边包含2或在4旁边包含4,则返回true,但不能同时包含这两个。

我只使用了数组,没有使用列表方法,但我想这样做是为了练习。这是我所拥有的,数组。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而不是整数。新代码

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);
}

共有3个答案

杨和蔼
2023-03-14

试试这个:

public boolean either24(int[] nums) {
    return (Arrays.toString(nums).contains("2, 2") ^ Arrays.toString(nums).contains("4, 4"));       
}
辛渝
2023-03-14

问题是您正在使用包含所有方法。留档说:

如果此列表包含指定集合的所有元素,则返回true。

即使您两次传入2,也只是检查列表是否包含2。换句话说,它是说,“这个列表有两个吗?很好。这个列表有两个吗?很好”

水瀚漠
2023-03-14

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 8中,该类没有任何包装的方法。 相反,我从中获取,然后像这样从中获取: 还有其他在我缺少的操作上生成操作的方式吗? 问题答案: 我的类似问题被标记为重复,但这是我用来避免某些样板的辅助方法:

  • 问题内容: 我正在开发php / javascript聊天。 用户登录时,其用户名将插入名为的MySQL表中。此插入返回将存储在称为 当用户关闭页面时,我需要删除MySQL表行。 我尝试了以下方法,但没有成功: js文件 chat.php 有什么办法吗? 问题答案: 您触发ajax异步(jQuery的默认设置-ajax)。但是浏览器不会等待任何卸载。 尝试在ajax 设置中进行设置。但是,您永远无

  • 问题内容: 我在javascript中有一个名为“ checkdata(code)”的函数,如您所见,该函数接受一个名为“ code”的参数来运行并返回一个15个字符的字符串。 因此,我发现了(并测试了)如何在javascript中调用无参数函数,但是我的问题是,当我调用checkdata(code)时,总是得到“无”返回值。到目前为止,这是我正在做的事情: 但是,正如我之前说的,我一直都没有打印

  • 问题内容: 我试图更好地掌握numpy数组,所以我有一个关于它们的示例问题: 假设我有一个名为a的numpy数组。我想对进行操作,使其中的所有小于0的值递增,其余的保持不变。例如,如果我有: 我想返回: 最紧凑的语法是什么? 谢谢! 问题答案:

  • 问题内容: 我有一个数组 如您所见,键0与1、3和4相同。键2与它们全部不同。 在它们上运行array_unique函数时,唯一剩下的是 有什么想法为什么array_unique无法按预期工作? 问题答案: 这是因为使用字符串比较来比较项目。从文档: 注意:当且仅当(string)$ elem1 ===(string)$ elem2,两个元素才被视为相等。换句话说:当字符串表示相同时。将使用第一个

  • 我想在下拉菜单上做mouseover函数。当我们悬停在菜单上时,它将显示新的选项。我尝试使用XPath单击新选项。但不能直接单击菜单。因此,作为手动方式,我试图悬停在下拉菜单上,然后将单击新的选项。