亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何比較兩個不同大小的數組列表并檢查元素的順序

如何比較兩個不同大小的數組列表并檢查元素的順序

白板的微信 2022-05-12 18:39:24
如何比較兩個不同大小的數組列表并檢查元素的順序?1.首先檢查 ArrayList1 是 list2 的子集2.第二次檢查ArrayList2與List1的順序相同,忽略隨機元素Arraylist1{"this", "is", "a", "coding", "test"};Arraylist2{"this", "is", "random1", "a", "random2", "coding", "random3", "test"};如果 List2 按以下順序測試將通過:"this" "is" "a" "coding" "test" 如果列表 2 有任何其他順序,則測試將失敗,例如:"a", "is", "coding", "test", "this",或者如果缺少這 5 個單詞中的任何一個。程序應忽略列表 2 中任意數量的隨機值(如 random1、random2 和 random3)。我怎樣才能實現這種情況?我嘗試for了循環和迭代器。它沒有用,他們給了我兩個 ArrayList 的共同元素,但沒有給我“訂單”。我還可以做些什么?for循環使用:list1.contains(list2.get(i)))但這只是比較值,不檢查順序。while帶循環的迭代器:Iterator<String> List1_Iterator = List1.iterator();while (List1_Iterator.hasNext()) {}這也不檢查元素的順序。
查看完整描述

3 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

您也可以按照您的步驟執行這個簡單的過程。1)比較元素。2)比較順序。


import java.util.*;

class Stack1

{

    public static void main(String args[])

    {

        ArrayList<String> list=new ArrayList<String>();

        list.add("First");

        list.add("name");

        list.add("is");

        list.add("Jay");


        ArrayList<String> list2=new ArrayList<String>();

        list2.add("First");

        list2.add("name");      

        list2.add("is");

        list2.add("Sudeep");


        ArrayList<String> list3=new ArrayList<String>();            


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

        {

            for(int j=0;j<list.size();j++)

            {                       

                if(list2.contains(list.get(j))==true)

                {

                    if(list2.get(i)==list.get(j))

                    {

                        list3.add(list2.get(i));

                    }   

                }

                else{ break; }

            }

        }


        if(list.equals(list3))

        {

            System.out.println("true");

        }

        else{System.out.println("false");}

    }

}


查看完整回答
反對 回復 2022-05-12
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

一種方法是首先創建一個名為 2 的列表的副本list2Copy,然后刪除list2Copy中不存在的所有元素list1。現在你只需要比較它們是否完全相等。


List<Integer> list1 = Arrays.asList(1,3,5);

List<Integer> list2 = Arrays.asList(1,2,3,4,5);

ArrayList<Integer> list2Copy = new ArrayList<>(list2);

list2Copy.removeIf(x -> !list1.contains(x));

return list1.equals(list2Copy);

這是另一種時間復雜度較小的方法:


if (list1.size() > list2.size()) {

    // definitely not same order

    return false;

}


int list1Index = 0;

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

    if (Objects.equals(list2.get(i), list1.get(list1Index))) {

        list1Index++;

        if (list1Index == list1.size())  {

            return true;

        }

    }

}

// at the end, list1Index should be the same as list1.size() if list2 is in the same order.

return false;


查看完整回答
反對 回復 2022-05-12
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

Arraylist 是索引的,因此您可以遍歷最小的列表,然后通過比較索引處的值來檢查不匹配。只有當兩個列表中的元素順序正確(一個列表是另一個列表的子集,并且元素以相同的順序相同)時,才能以有效的方式執行相同操作的方法才會返回 true。


private boolean checkForEqualityInorder(List<String> list1, List<String> list2) {

        if (list1.size() < list2.size()) {

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

                if( !list1.get(i).equals(list2.get(i))) {

                    return false;

                }

            }

        } else {

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

                if( !list2.get(i).equals(list1.get(i))) {

                    return false;

                }

            }

        }

        return true;

    }

上面的方法接受兩個列表,并且只有當一個是另一個的子集時才會返回 true(按順序檢查)。


為您的問題增強相同的方法:


private boolean checkForEqualityInorder(List<String> list1, List<String> list2) {

        for (int i=0, k=0; i <list1.size(); i++, k++){

            if (list2.get(k).startsWith("random")) {

                i--;

                continue;

            }

            if(!list1.get(i).equals(list2.get(k))) {

                return false;

            }

        }

        return true;

    }


查看完整回答
反對 回復 2022-05-12
  • 3 回答
  • 0 關注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號