Collection
4419 ワード
Collectionインタフェース
CollectionインタフェースはListインタフェースとSetインタフェースを含む
1 listインタフェース:3つのインプリメンテーションクラスを含む(集合要素は繰り返すことができる) ArrayListクラス:配列依存で実現され、ランダムアクセスの性能は良好であるが、大量の挿入、削除操作を行い、性能が悪い.操作後、後続要素が移動する必要があるためである. LinkedListクラス:内部は二重チェーンテーブルに依存して実現されるため、挿入と削除の性能は良好であるが、ランダムアクセス要素の性能は悪い. Vectorクラス:ArrayListと非常に類似しており、ArrayListとLinkdeListに対してスレッドが安全な である.
2 Setインタフェース:1つのサブインタフェースと3つの実装クラスを含む(集合要素は重複できない) HashSetクラス:重複する要素を格納することができず、ハッシュされた格納方法を採用しているため、順序がありません.ここでいう順序なしとは,要素挿入の順序が出力の順序と一致しないことを意味する. LinkedHashSetクラス:LinkedHashSetセットは、要素のhashCode値に基づいて要素の格納場所を決定しますが、チェーンテーブルを使用して要素の順序を維持します.これにより、エレメントは挿入順に保存するように見える、すなわち、LinkedHashSetは、その集合を巡回すると、エレメントの追加順に集合のエレメント にアクセスする. TreeSetクラス:SortSetインタフェースを実装(TreeSetの要素のソートには2つの方法がある).TreeSetがオブジェクトに入れるときにそのオブジェクトのクラスはComparableインタフェース(TreeSet無パラメータ構造)2を実現する.外部クラスによるComparatorインタフェース(TreeSetはパラメータ構造) を実現する.
CollectionインタフェースはListインタフェースとSetインタフェースを含む
1 listインタフェース:3つのインプリメンテーションクラスを含む(集合要素は繰り返すことができる)
list = Collections.synchronizedList(list);
2 Setインタフェース:1つのサブインタフェースと3つの実装クラスを含む(集合要素は重複できない)
public static void main(String[] args) {
Set set = new HashSet();
set.add(3);
set.add(4);
set.add(7);
set.add(5);
set.add(4);
set.add(34);
for(int i : set)
System.out.print(i+" ");
}
:
34 3 4 5 7
// Comparable ===================
class Person1 implements Comparable{
private String name;
private int age;
private int score;
public Person1(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int getScore() {
return score;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + score;
return result;
}
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Person1))
return false;
Person1 p = (Person1) obj;
if(p.age == this.age&&this.name==p.name&&this.score==p.score)
return true;
return false;
}
@Override
public String toString() {
return "Person1 [name=" + name + ", age=" + age + ", score=" + score + "]";
}
@Override
public int compareTo(Person1 o) {
// TODO Auto-generated method stub
return o.getName().compareTo(this.getName());
}
}
// Comparator ===============================
class sortNameComparator implements Comparator{
@Override
public int compare(Person1 o1, Person1 o2) {
// TODO Auto-generated method stub
if(o1.getName().equals(o2.getName()))
return 1;
return o1.getName().compareTo(o2.getName());
}
}
public class LearnComparator{
public static void main(String [] args){
System.out.println(" -------------");
Set personSet1 = new TreeSet(new sortNameComparator());
personSet1.add(new Person1("cat",13,30));
personSet1.add(new Person1("dog",17,70));
personSet1.add(new Person1("monky",15,90));
personSet1.add(new Person1("cat",16,55));
personSet1.add(new Person1("mouse",14,35));
for(Person1 P:personSet1)
System.out.println(P);
//System.out.println(" -------------");
// TreeSet
// Set personSet1 = new TreeSet();
// personSet1.add(new Person1("cat",13,30));
// personSet1.add(new Person1("dog",17,70));
// personSet1.add(new Person1("monky",15,90));
// personSet1.add(new Person1("cat",16,55));
// personSet1.add(new Person1("mouse",14,35));
// for(Person1 P:personSet1)
// System.out.println(P);
// }
}
:
-------------
Person1 [name=cat, age=13, score=30]
Person1 [name=cat, age=16, score=55]
Person1 [name=dog, age=17, score=70]
Person1 [name=monky, age=15, score=90]
Person1 [name=mouse, age=14, score=35]