ホームページ  >  記事  >  文字列の長さを逆に並べ替えます (最長の文字列が最初)

文字列の長さを逆に並べ替えます (最長の文字列が最初)

王林
王林転載
2024-02-13 23:57:08520ブラウズ

php エディター Strawberry は、文字列の長さを逆にソートするという興味深い文字列ソート問題を提供します。つまり、最も長い文字列が最初に来ます。この問題は、組み込み関数とカスタム ソート関数を使用することで解決できます。並べ替えプロセスでは、各文字列の長さを計算し、最大長から最小長の順に並べ替える必要があります。次に、この興味深い文字列ソート問題を実装する方法を詳しく説明します。

質問の内容

質問を長さ(降順)で並べ替えるメソッドorderquestionsbylength()を作成する演習を行う必要がありました。

次のコードは機能します (ただし、降順でソートされません):

リーリー

.reversed() を追加するとすぐに、IDE はエラーをスローします。

'object' のメソッド 'gettext' を解決できません gettext() メソッドがあり、.reversed It を追加しているにもかかわらず、 () より前に動作します

この問題の解決方法がわからないのに、gpt はコードが正しいと言っているので、これは私を狂わせています (gpt に頼るべきではありませんが、整数を降順に並べ替える別の方法があるので、Returned() を返しました。問題なく使用されました

回避策

comparator.comparing メソッドが .reversed() でチェーンされているときにラムダ パラメーターの型を正しく推論できないために、この問題が発生することがあります。

この問題を解決するには、ラムダ式で

明示的な型情報

を指定します。 (string question) -> … を使用して orderquestionsbylength メソッドを変更する方法を次に示します。 <pre class="brush:php;toolbar:false;">`public void orderQuestionsByLength(){ Collections.sort(questions,Comparator.comparing(question -&gt; question.getText().length())); for (Question question : questions){ System.out.println(question); } }`</pre>call

comparator#reversed

文法に注意してください。

comparator.comparing を使用してコンパレータを生成した後、reversed を呼び出します。

comparator.comparing
    は、インスタンス (オブジェクト) を生成する
  • static メソッド呼び出しです。 comparator#reversed
  • は、別のオブジェクトを生成するインスタンス メソッド呼び出しです。
  • chf の回答
で指摘されているように、ラムダに渡されるパラメータのデータ型について明示的にする必要がある場合があります:

(string issue) -> …. リーリー ところで、上に示したように、collections#foreach

とメソッド参照を使用して

for ループを折りたたむことができます。 完全なサンプル アプリケーション コード: リーリー

以上が文字列の長さを逆に並べ替えます (最長の文字列が最初)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。