いくつかの小さな場所

1.過負荷は、ヘビーデューティー、複数のライトの使用を最小限に抑え、あまりにも「類似」書き込みませんが、再利用性を検討するために継承階層を持っている方が良いです

パブリック クラスカード{
     公共の 静的な文字列の分類(設定<?> セット){
         リターン「セット」
    } 
    パブリック 静的文字列分類(一覧<?> リスト){
         戻り「リスト」
    } 
    パブリック 静的の文字列分類(コレクション<?> コレクション){
         リターン「不明」
    } 

    パブリック 静的 ボイドメイン(文字列[]引数){ 
        コレクション <?> []コレクション= {
                 新しい HashSetの<文字列>()、
                 新規のArrayList <ストリング> ()
        }。

        (<?>コレクションC:コレクション){ 
            System.out.printlnは(分類(c)参照)。
        } 
    } 
}

サブクラスがコレクションされているため、プログラムは、唯一の特定の適切なを見つけるために、右かわかりませんので、ここでは、コンパイルしますが、不明であるだろう。

ここでは、[OK]をバリアントで見ることができます

    公共の 静的な文字列分類(コレクション<?> コレクション){
 //         リターン「不明」。
        リターン・コレクションinstanceofは設定されていますか?「セット」
                コレクションinstanceofの一覧?「リスト」:「不明」
    }

 

2. NULLを返さない、または空の配列のコレクションを返すために、これは本当に非常に一般的な間違いの習慣である決して

- まず、未処理のヌルの危険性を高めるために

- 第二には、取引が来た理由のは、奇妙なロジック、なぜヌル、ヌルを見てみましょう

パフォーマンスの収集のために、私たちは順番に不変なコレクションを戻すことができます。次のコードは、そうCollections.emptyListメソッドを使用することです。あなたが設定を戻したい場合は、Collections.emptySetを使用することができます。地図、使用Collections.emptyMapに戻ります。しかし、覚えて、これは最適化され、それはほとんど必要ありません。あなたはそれが必要だと思う場合は、必ずそれは本当に役立ちますことを確認、前と後のパフォーマンスを測定

    公共の一覧<カード> getCards(){
         戻り NUMS == 0?Collections.emptyList() 新しいのArrayList <> (NUMS)。
    }

ここで、同じセットのアレイの場合です。決してはNULLを返していないが、長さゼロの配列を返します。一般的に、あなたが唯一の正しい長さの配列を返す必要があり、この長さは0であってもよいです。あなたが割り当て長さゼロの配列がパフォーマンスを傷つけることができると考えられる場合、すべての長さゼロの配列が不変であるので、それは、同じ長さゼロの配列を繰り返すように返すことができます。

    プライベート 静的 最後のカード[] EMPTY_CARD_ARRAY = 新しいカード[0 ];
    公共カード[] getCards(){
         戻りCard.EMPTY_CARD_ARRAYと、
    }

 

少し使用の3.Optional

公共の 静的 <E 拡張匹敵<E >>オプション<E> MAX(コレクション<E> C){
         場合(c.isEmpty()){
             返す)(Optional.emptyを。
        } 
        E結果 = NULL ;
        (E E:C){
             場合(結果== NULL || e.compareTo(結果)> 0 ){ 
                もたらす = Objects.requireNonNull(E); 
            } 
        } 
        戻りOptional.of(結果)。
    }
パブリック 静的 ボイドメイン(文字列[]引数){ 
        リストの<string>単語= 新規のArrayList <> (); 
        words.add( "" ); 
        words.add( "B" ); 
        words.add( "C" ); 
        文字列maxWord = MAX1(ワード).orElse( "なし単語" ); 
        System.out.println(maxWord)。
    }

コンパイル時にオプションのヌルは、コンパイルに失敗すると、1つは、上記の次の代替を使用することができます。

公共の 静的 <E 拡張匹敵<E >>オプション<E> MAX1(コレクション<E> C){
         リターン。c.stream()MAX(Comparator.naturalOrder()); 
    }

 

すべてのクラスは、反復動作することができるように前記反復処理可能インターフェースは、実装されてもよいです

任意の計算のため5. floatまたはdoubleを使用していない、正確な答えを必要としています。あなたは、システムが小数点を処理したい場合は、基本的なタイプの使用、使用のBigDecimalに関連した不便さとコストを気にしません。丸めの操作が必要な場合はBigDecimalを使用することの別の利点は、それが完全に丸め制御することができる、8つの丸めモードから選択することができるされています。あなたが行動を丸め合法的なビジネスコンピューティングの利用を実行した場合、それは非常に便利になります。パフォーマンスが重要であれば、あなたは小数点を扱う気にしませんが、値が大きすぎるではない、あなたはintまたはlongを使用することができます。値がより9つの小数以下である場合、INTを使用することができる。そうでない場合より18以上、長く使用することができます。数が18を超えるかもしれ場合、BigDecimalのを使用しています。 

 

 

彼は、ハッハッハ、とても面白い、今日はとても幸せではない、長い時間をマイクロチャネルK神のグループに参加しました。

おすすめ

転載: www.cnblogs.com/CherryTab/p/11900717.html