Java List,Set,Map初期化問題

2769 ワード

List,Set,Map変数初期化問題:
List,Set,MapはInterfaceとしてインスタンス化できないので,それらを実現する具体的なクラス:ArrayList,LinkedList,HashSet,HashMapなどでインスタンス化し,使用する.
List list = new ArrayList();

を選択して設定できます.でも書く
List<String> list = new ArrayList<String>();

また*List cannot be converted to Arraylist**の問題に遭遇しました.Stringを削除します.
List<String> list = new ArrayList<>();

この問題はありません.Stack Overflowの記述によると、arraylist-vs-arraylistintegerのJava 7以降のバージョンでは、インスタンス化する汎用クラスの実際のタイプを<>で推定することがサポートされており、=右にもう一度書く必要はなく、<>でコードの混乱を減らすことができます.しかし、なぜ多く書くのがだめなのかは言わず、後で声明を簡潔にしたほうがいいとしか言いようがない.Mapについても同様の方法で宣言します.
Map <String, List<String>> map = new HashMap<>();

key-valueを新規作成する場合もList list=new ArrayList/Link edList<>();書きましょう.
また,ArrayListではなくListで宣言することはインタフェース向けプログラミングの問題にかかわる.しかし、簡単に言えば、その後のコードがすべてListインタフェースの記述に従うことをListで保証することができ、ArrayListを他のListに置き換えることも容易である.ArrayListで直接宣言する場合は、ArrayList class専用のメソッドを使用しますが、その後LinkedListに変更するにはArrayList専用のメソッドを置き換えなければなりませんので、特に複雑です.参考Quara.