コレクション:オブジェクトのみを保存でき、オブジェクトタイプは異なる場合があり、長さは可変になります。
一般的に使用されるインターフェイスとクラス:
1。リストインターフェイス(秩序と繰り返し可能):ArrayListクラス、LinkedList、Vectorクラス
2。インターフェイスを設定します(順序で、繰り返されません):ハッシュセットクラス、ツリーセットクラス
3。マップインターフェイス(キー値ペア、キーのみ、値は一意ではない):ハッシュマップクラス、ハッシュテーブルクラス、TreeMapクラス
コレクションクラスのループトラバーサル
1。ループの場合:(int i = 0; i <arr.size(); i ++){…}など
2。
3。Iterator(Iterator):たとえば、Iterator IT = arr.iterator(); while(it.hasnext()){object o = it.next(); …}
注:トラバーサル中にアレイまたはコレクションを変更することはできませんが、ループの場合はトラバーサル中に変更できます。
ArrayList、LinkedList、およびVectorの違い
ArrayList:主にクエリに使用される高効率
LinkedList:主に挿入と削除に使用されます
ベクトル:スレッドセーフ、主にクエリに使用されます
コード:
java.util.arraylist; Import java.util.iterator; import java.util.linkedlist; import java.util.list; import java.util.vector; public static void main(string [] args){list arraylist = new rinkedList() vector(); arraylist.add( "1"); //文字タイプArrayList.Add( "1"); // repent element arraylist.add( "2"); arraylist.add(1); // number type linkedlist.add( "1"); linkedlist.add( "1"); linkedlist.add( "2"); linkedlist.add(1); vector.add( "1"); vector.add( "1"); vector.add( "2"); vector.add(1); system.out.println(obj);} for(int i = 0; i <linkedlist.size(); i ++){// loop for loop system.out.println(arraylist.get(i));} iterator it = vector.iterator(); // iterator while(it.hasnext()){object j = it.next(); system.out.println(j);}}}}}ハッシュセットとツリーセットの違い
ハッシュセット:ハッシュセットはハッシュテーブルによって実装されます。ハッシュセットのデータは順序付けられていません。 nullを置くことはできますが、nullを1つしか入れることができません。
ツリーセット:ツリーセットは2差のツリーによって実装されています。ツリーセットのデータは自動的にソートされ、null値を配置することは許可されていません。
コード:
public class settest {public static void main(string [] args){set hashset = new hashset(); set treeset = new Treeset(); hashset.add( "1"); //文字型Hashset.add( "1"); //要素hashset.add( "2")を繰り返します。 Hashset.Add(1); // number type treeset.add( "1"); treeset.add( "1"); treeset.add( "2"); //treeset.add(1); //エラーを報告すると、treesetは(オブジェクトi:hashset){// foreach loop system.out.println(i);} iterator it = treeset.iterator();のさまざまなデータ型を追加できません。 // iterator while(it.hasnext()){object j = it.next(); system.out.println(j);}}}}}注:SETインターフェイスにはGETメソッドがないため、ループに通常のループを使用することはできません。
HashMap、Hashtable、Treemapの違い
Hashmap:Hashmapは1つのnullキーと複数のnull値を許可します
ハッシュテーブル:ハッシュテーブルのキーと値はヌルになることは許されません
Treemap:キーに従って保存するレコードを並べ替えることができます。デフォルトでは、キー値の昇順でソートされます。ソートされたコンパレータを指定することもできます。イテレータで通過すると、得られたレコードがソートされます。
コード:
java.util.hashmap; Import java.util.hashtable; import java.util.iterator; import java.util.map; import java.util.set; import java.util.treemap; public class maptest {public static void main [] {map = public hashmap = hashmap = new hashmap( hashtable(); map treemap = new Treemap(); hashmap.put(1、 "1"); //文字型値hashmap.put(2、 "1"); //同じ値hashmap.put(3、 "2"); hashmap.put(4、1); //数値型値hashmap.put( "5"、1); //文字タイプKey Hashtable.put(1、 "1"); hashtable.put(2、 "1"); hashtable.put(3、 "2"); hashtable.put.put(4、1); hashtable.put( "5"、1); treemap.put(1、 "1"); treemap.put.put(2、 "1"); treemap.put(5、1/" 1); treemap.put(1、 "1"); treemap.put(2、 "1"); treemap.put(5、 "2"); treemap.put(4、1); // treemap.put( "5"、1); //エラーが報告されます、Treemapはさまざまなタイプのキーを追加できませんhashmap.keyset(); for(iterator iter = set.iterator(); iter.hasnext();){object key = iter.next(); object value = hashmap.get(key); system.out.println(key+"/t"+value);} //繰り返しトラバースのkey-value pairs! iteratorテーブル= hashtable.entryset()。iterator(); while(table.hasnext()){map.entry entry =(map.entry)table.next();オブジェクトkey = entry.getKey(); //キーオブジェクト値を取得= entry.getValue(); //値system.out.println(key+"/t"+value)を取得します。 } // iterally Traverse Treemap key-valueペアiterator tmp = treemap.entryset()。iterator(); while(tmp.hasnext()){map.entry entry =(map.entry)tmp.next();オブジェクトkey = entry.getKey(); //キーオブジェクト値を取得= entry.getValue(); //値system.out.println(key+"/t"+value)を取得します。 }}}スレッドの安全性に関するクラスには、vecto、hashtabl、stringbuffeが含まれます
非スレッド安全性:ArrayList、LinkedList、Hashmap、Hashset、Treemap、Treeset、StringBulider
注:CONCURRENTHASHMAPは、スレッドの安全性のためにハッシュマップの代わりに使用でき、ハッシュテーブルよりも効率的です。
Java独自のメカニズムは、スレッドの安全性を完全に保証することはできません。手動で自分でコードして制御する必要があります。