Javaのいくつかのリストの簡単な紹介
6358 ワード
JAvaのリストの簡単な紹介と反復器
Collectionクラスには、次のタイプのコンテナがあります. Listは、特定の順序で要素 を保存する. Set要素は を繰り返すことができません. Queueチェーンテーブルは、一端からのみ対象を挿入する、他端から取り出す先進先出原則 に従う. Mapキー値対挿入 リストには2種類のリストがあります. ArrayList:ランダムアクセスが速く、挿入削除が遅い LinkedList:挿入削除は速いが、ランダムアクセスは遅い.スタック、キュー、両端リストとしてのメソッドも追加され、直接スタックとして使用できます.「後進先出、先進後出」の原則を遵守します.romove()romovefirst()はリストヘッダを返し、addfirst()addlast()はリストの末尾getfirst()element()peek()はリストヘッダ に挿入されます.
Set SetはCollectionと全く同じインタフェースを持つため、追加の機能はなく動作が異なるだけで、重複する要素を保存することはできません. HashSet使用ハッシュ TreeSetは、要素を赤-黒ツリーデータ構造中の に格納する. LinkedHashSetもハッシュを使用していますが、チェーンテーブルを使用して要素の挿入順序contains(要素)を維持し、その要素が含まれているかどうかを確認します.
Mapはキー値対KeyValueの形式でオブジェクト-HashMapを格納します:無秩序で、入れる順序に関係なく-LinkedHashMap:格納時にputのミリ数を記録し、遍歴時に格納する順序で出力します
Mapは多次元にも拡張できます
2チェーンテーブルに要素を追加する方法
1 Collections.addAll()は複数のパラメータを受け入れ、その後のパラメータを配列に変換して最初のパラメータのシーケンスに格納する
2リストインスタンスを作成するとき、入力パラメータはArrayを使用することができる.asList()はパラメータ配列をリストリスト形式に変換し、パラメータは配列またはカンマで分割できる要素リスト
3 foreachと反復器Iterable
すべてのCollectionタイプのオブジェクトはimplements Iterableインタフェースを強制的に要求されるため、どのCollectionオブジェクトもその反復器Iteratorを返すことができます.
反復器の内部コードは次のとおりです.
iteratorの使用には通常この3つの方法が含まれています
foreach遍歴では、内部にIterableインタフェースのiteraterメソッドが使用されています.
Iterableを実装したすべてのクラスは、foreach文で使用できます.たとえば、次のようになります.
Collectionクラスには、次のタイプのコンテナがあります.
Set SetはCollectionと全く同じインタフェースを持つため、追加の機能はなく動作が異なるだけで、重複する要素を保存することはできません.
Mapはキー値対KeyValueの形式でオブジェクト-HashMapを格納します:無秩序で、入れる順序に関係なく-LinkedHashMap:格納時にputのミリ数を記録し、遍歴時に格納する順序で出力します
Map map=new HashMap();
map.put(k,v);
map.get(k) value
Mapは多次元にも拡張できます
Map<K,List>> maps=new HashMapList >>();
2チェーンテーブルに要素を追加する方法
1 Collections.addAll()は複数のパラメータを受け入れ、その後のパラメータを配列に変換して最初のパラメータのシーケンスに格納する
2リストインスタンスを作成するとき、入力パラメータはArrayを使用することができる.asList()はパラメータ配列をリストリスト形式に変換し、パラメータは配列またはカンマで分割できる要素リスト
Collection<> collection=new ArrayList<>(Arrays.asList(1,2,3,4,5))//
Collections.addAll(collection,1,2,3,4,5,6)//
Collection.addAll(collection,moreInts)
3 foreachと反復器Iterable
すべてのCollectionタイプのオブジェクトはimplements Iterableインタフェースを強制的に要求されるため、どのCollectionオブジェクトもその反復器Iteratorを返すことができます.
Collection<> collection=new ArrayList<>
Iterator<> it=collection.iterator()
反復器の内部コードは次のとおりです.
Interface Iterator{
boolean hasNext()
Returns true if the iteration has more elements.
E next()
Returns the next element in the iteration.
void remove()
Removes from the underlying collection the last element returned by the iterator (optional operation).
}
iteratorの使用には通常この3つの方法が含まれています
Iteraotr it= arrayList.Iterator();
while(it.hasNext())
{
print(it.next());
it.remove();
}
foreach遍歴では、内部にIterableインタフェースのiteraterメソッドが使用されています.
for(type var:coll()){body-of-loop; }
:
for(Iterator<type> iter=coll.iterator(); iter.hasNext();){
type var=iter.next();
body-of-loop;
}
Iterableを実装したすべてのクラスは、foreach文で使用できます.たとえば、次のようになります.
public class IterableClass implements Iterable{
protected String[] words=("And that is how "+
"we know the earth to be banana-shaped.").split(" ")//
public Iterable iterator(){
return new Iterable(){
private int index=0;
public boolean hasNext(){
return indexpublic String next(){
return word[index++];
}
public remove(){}
};
}
public static void main(String[] args){
for(String s:new IterableClass())
System.out.print(s+" ")
}
}
Output: And that is how we know the earth to be banana-shaped.