テスト駆動開発 プログラミング Java

【Java】ArrayListの最長文字列を取得する簡単な方法

投稿日:2020年8月17日 更新日:

(追記)2020/08/19
1. Listが空の場合(NoSuchElementException)に対応しました。
2. Nullが含まれていた場合、空文字として扱うように修正しました。

ArrayList<String>に格納されている文字列のうち、最大長であるものを簡単に取り出す方法です。
普通に考えたら、forで回してlenghtがMaxになるものを取得するというものですが、
ここではstreamを使って 1行 簡単に取得します。

注)streamはJava8以降で利用可能です。

ソースコード

maxString()が最大文字列長を取得するメソッドです。

 

解説

  • .map(s -> s == null ? “” : s)
  •  _strListの要素がNULLの場合は空文字に置換し、
     そうでない場合はその文字列をそのまま返します。

  • max(
  •  指定されたComparator(全体順序付けを行う比較関数)の最大要素を返します。
     これにより、Comparatorで比較した最大値が返ってきます。

  • Comparator.comparing(String::length)
  •  比較するためのキーとして、String型のlengthを指定します。
     これにより、文字列の長さで比較します。

  • .get()
  •  値を返します。

    よって、String型のlengthで比較して最大となる値を返すことができます。

     

    テストコード(おまけ)

    検証したテストコードです。
    今後は、public static void main(String…strings) で例示するのではなく、
    TDDの学習も兼ねて、テストコードで例示していきたいと思っています。

     
    最後までお読み頂き、ありがとうございました!
    ご意見・ご要望がありましたら、遠慮なくコメント下さい!
    もし内容が良かったらランキング評価を頂けると励みになります(^^)

    ランキング評価する

    -テスト駆動開発, プログラミング, Java
    -,

    執筆者:


    comment

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    CAPTCHA


    関連記事

    【Java】Stringのequalsで定数を左側にする理由

    JavaのStringでequalsによる等価判定を行う場合に、 比較対象となる定数は左側にする理由はNullPointerExceptionを回避するためです。 以降、NullPointerExce …

    Thymeleafで1000円単位をカンマ区切りで表示する方法

    Thymeleaf(テンプレートエンジン)で金額などの数値を 1000円単位のカンマ区切りで表示する方法です。 ここでは、カンマ区切りの機能はオブジェクト側で実装し、 Tymeleaf(View)は表 …

    Laravelのヘルパー関数とは?

    Laravel includes a variety of global “helper” PHP functions. Many of these functions are …

    【Java】文字列の完全一致と部分一致を判定する方法

    Stringオブジェクトのmatches、containsメソッドを使った説明です。 戻り値:boolean   完全一致 説明 完全一致は文字列が同じであることを判定するだけです。 そのた …

    ModelからBindingResultが消える原因と対処方法

    環境 Java(SpringFramework) Thymeleaf 状況 更新画面でバリデーションエラーにより更新が失敗したというようなケースにおいて、 BuindingResultにFormのエラ …

    記事を探す

    SpringFramworkの良書

    ■おすすめ教材
    Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

    ※SpringはJavaのFrameworkの1つです。
    変更のしやすさ、保守性の高さが特徴です。