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神のグループに参加しました。