第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

java - 對整數(shù)堆棧的數(shù)組列表進行排序時遇到問題

java - 對整數(shù)堆棧的數(shù)組列表進行排序時遇到問題

精慕HU 2021-11-03 14:21:29
目前,我正在嘗試創(chuàng)建一種方法來為我的作業(yè)對整數(shù)字典堆棧的數(shù)組列表進行排序。目前這是我所擁有的,但是,現(xiàn)在我面臨一個問題。Collections.sort(arrayList, new Comparator<Stack<Integer>>(){            public int compare(Stack<Integer> list1, Stack<Integer> list2){                int result = 0;                for (int i = 0; i <= list1.size() - 1 && result == 0; i++)                {                    result = list2.get(i).compareTo(list1.get(i));                }                return result;            }        });當(dāng)我嘗試輸入[[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 3], [1, 1, 1, 3, 1], [1, 1, 3, 1, 1], [1, 3, 1, 1, 1], [3, 1, 1, 1, 1], [1, 1, 3, 3], [1, 3, 1, 3], [1, 3, 3, 1], [3, 1, 1, 3], [3, 1, 3, 1], [3, 3, 1, 1], [1, 4, 4], [4, 1, 4], [4, 4, 1], [3, 3, 3]]作為整數(shù)堆棧的數(shù)組列表并設(shè)法得到這個結(jié)果時:輸出: [[4, 4, 1], [4, 1, 4], [3, 3, 3], [3, 3, 1, 1], [3, 1, 3, 1], [3, 1, 1, 3], [3, 1, 1, 1, 1], [1, 4, 4], [1, 3, 3, 1], [1, 3, 1, 3], [1, 3, 1, 1, 1], [1, 1, 3, 3], [1, 1, 3, 1, 1], [1, 1, 1, 3, 1], [1, 1, 1, 1, 3], [1, 1, 1, 1, 1, 1]]正如你所看到的,這不是字典式的,這就是我的目標(biāo)預(yù)期輸出: [[1, 4, 4], [3, 3, 3], [4, 1, 4], [4, 4, 1], [1, 1, 3, 3], [1, 3, 1, 3], [1, 3, 3, 1], [3, 1, 1, 3], [3, 1, 3, 1], [3, 3, 1, 1], [1, 1, 1, 1, 3], [1, 1, 1, 3, 1], [1, 1, 3, 1, 1], [1, 3, 1, 1, 1], [3, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]]這是問題,我哪里弄錯了?.compareTo 是如何工作的?編輯:顯然,我的教授對字典序的含義產(chǎn)生了誤解。但是,預(yù)期的輸出是我教授想要的輸出
查看完整描述

3 回答

?
皈依舞

TA貢獻1851條經(jīng)驗 獲得超3個贊

您需要首先檢查其中一個堆棧是否比另一個短。如果不是,您需要比較對 的元素,list1而list2不是相反。


Collections.sort(arrayList, new Comparator<Stack<Integer>>(){

  public int compare(Stack<Integer> list1, Stack<Integer> list2){

      int result = Integer.compare(list1.size(), list2.size());

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

      {

        result = Integer.compare(list1.get(i), list2.get(i));

      }

      return result;

  }

});


查看完整回答
反對 回復(fù) 2021-11-03
?
楊魅力

TA貢獻1811條經(jīng)驗 獲得超6個贊

如果我們的字典序概念是相同的,那么問題似乎在于您使用的是倒置的 compareTo(list2 compareTo list1 而不是 list1 compareTo list2)。


經(jīng)過一些修改后,您的代碼將如下所示:


Collections.sort(arrayList, new Comparator<Stack<Integer>>() {

    public int compare(Stack<Integer> list1, Stack<Integer> list2) {

        int result = 0;

        for (int i = 0; i <= list1.size() - 1 && result == 0; i++) {

            if (list2.size()-1 < i)

                return 1;

            else

                result = list1.get(i).compareTo(list2.get(i));

        }

        return result;

    }

});

此代碼將產(chǎn)生以下結(jié)果:[[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 3], [1, 1, 1, 3, 1], [1, 1, 3, 1, 1], [1, 1, 3, 3], [1, 3, 1, 1, 1], [1, 3, 1, 3], [1, 3, 3, 1], [1, 4, 4], [3, 1, 1, 1, 1], [3, 1, 1, 3], [3, 1, 3, 1], [3, 3, 1, 1], [3, 3, 3], [4, 1, 4], [4, 4, 1]],盡管您的預(yù)期結(jié)果我理解為按字典順序排列。


在if (list2.size()-1 < i)由于list2中比list1的較小for循環(huán)內(nèi)防止IndexOutOfBoundsException異常。


查看完整回答
反對 回復(fù) 2021-11-03
?
素胚勾勒不出你

TA貢獻1827條經(jīng)驗 獲得超9個贊

由于這是一項任務(wù),我會將您放在我認為正確的方向上,但我不會為您解決編程問題:

compare()是在接口Comparator<T>中定義的一個方法,它應(yīng)該-1, 0, or 1根據(jù)作為參數(shù)傳入的第一個對象小于、等于還是大于作為參數(shù)傳入的第二個對象而返回。

預(yù)期的對象是T您在聲明類時定義的類型。

compare()您編寫的方法中,您必須將要實現(xiàn)的任何比較方法解析為-1, a 0, or a 1.

如何獲得這些值取決于您如何評估一個T類型的對象是否小于、等于或大于相同類型的其他對象。

另一方面,Array.sort()將使用Comparatoras fit 在數(shù)組的兩個元素之間進行比較,并作為最終結(jié)果返回 sorted Array。

如果我理解您的說明,則array [1,1,1]出于訂購目的的 , 應(yīng)解釋為String "111";

因此,在編程方面Comparator,會有什么比較(與T)會arraysintegers。

并比較兩個arraysintegers,每個陣列中的元素應(yīng)被提取并粘在一起形成String。一旦你擁有兩者Strings,你就可以看到它們?nèi)绾蜗嗷ケ容^。


查看完整回答
反對 回復(fù) 2021-11-03
  • 3 回答
  • 0 關(guān)注
  • 239 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號