Java Programming 2015 – 9

Collectionインターフェース

Listインターフェース

LinkedListクラスは、配列を使ったリストです。

java.util.ArrayList

List<Animal> list = new ArrayList<Animal>();
list.add(tom);
list.add(jerry);
list.remove(jerry);
for (Animal ani : list) {
    System.out.println("list=" + ani);
}

java.util.LinkedList

LinkedListクラスは、リスト構造を使ったリストです。

List<Animal> list = new LinkedList<Animal>();
list.add(tom);
list.add(jerry);
list.remove(jerry);
for (Animal ani : list) {
    System.out.println("list=" + ani);
}

Setインターフェース

Setは集合で、同じオブジェクトは格納されず、基本的には順序がありません。

java.util.HashSet

HashSetはハッシュアルゴリズムを使ったセットです。シノニム(同じキー値で格納されること)の発生が少なければ高速です。

Set<Animal> set = new HashSet<Animal>();
set.add(tom);
set.add(tom);
set.add(jerry);
for (Animal ani : set) {
    System.out.println("set=" + ani);
}

java.util.TreeSet

TreeSetは木構造を使ったセットです。TreeSetを使うとオブジェクトはキーの順序に並んでいるように取り出すことができます。

Set<Animal> set = new TreeSet<Animal>();
set.add(tom);
set.add(tom);
set.add(jerry);
for (Animal ani : set) {
    System.out.println("set=" + ani);
}

Mapインターフェース

Mapはキー値とそれに対応する値の組を格納するデータ構造です。キーが同じものは格納できません。

java.util.HashMap

HashMapはハッシュアルゴリズムを使ったマップです。シノニム(同じキー値で格納されること)の発生が少なければ高速です。

Map<String, Animal> map = new HashMap<String, Animal>();
map.put("cat",tom);
map.put("mouse",jerry);
System.out.println("map=" + map.get("cat"));
System.out.println("map=" + map.get("dog"));
System.out.println("map=" + map.containsKey("cat"));
System.out.println("map=" + map.containsKey("dog"));

Map<Animal, String> map2 = new TreeMap<Animal, String>();
map2.put(tom, "cat");
System.out.println("map2=" + map2.get(tom));

Map<Animal, Animal> map3 = new TreeMap<Animal, Animal>();
map3.put(tom, jerry);
System.out.println("map3=" + map3.get(tom));

Map<String, Object> map4 = new TreeMap<String, Object>();
map4.put("a", jerry);
System.out.println("map4=" + map4.get("a"));
map4.put("b", "hehehe");
System.out.println("map4=" + map4.get("b"));

java.util.TreeMap

TreeMapはハッシュアルゴリズムを使ったマップです。TreeMapを使うとオブジェクトはキーの順序に並んでいるように取り出すことができます。

Map<String, Animal> map = new TreeMap<String, Animal>();
map.put("cat",tom);
map.put("mouse",jerry);
System.out.println("map=" + map.get("cat"));
System.out.println("map=" + map.get("dog"));
System.out.println("map=" + map.containsKey("cat"));
System.out.println("map=" + map.containsKey("dog"));

Map<Animal, String> map2 = new TreeMap<Animal, String>();
map2.put(tom, "cat");
System.out.println("map2=" + map2.get(tom));

Map<Animal, Animal> map3 = new TreeMap<Animal, Animal>();
map3.put(tom, jerry);
System.out.println("map3=" + map3.get(tom));

Map<String, Object> map4 = new TreeMap<String, Object>();
map4.put("a", jerry);
System.out.println("map4=" + map4.get("a"));
map4.put("b", "hehehe");
System.out.println("map4=" + map4.get("b"));

日付関連

java.util.Calendarクラスとjava.util.Dateクラス

日付や時刻の操作(X日後の日付、2つの日付間の日数など)や特定の日付や時刻を設定するには、Calendarクラスまたはその派生クラスを使います。
java.util.Dateクラスは、データとして入出力するものとして使います。
また、java.sql.Dateもありますが、こちらはデータベース用で日付だけが格納できます。

// Calendarクラス
Calendar c = Calendar.getInstance();
// 日付・時刻を設定(年、月、日、時、分、秒)
c.set(2015, 0, 2, 3, 4, 5);
Date date = new Date(c.getTimeInMillis());
System.out.println("date=" + date);

オブジェクトの比較

if (tom.equals(jerry)) {
    System.out.println("tomとjerryは同じ");
}
else {
    System.out.println("tomとjerryは違う");
}
if (tom.equals(tom)) {
    System.out.println("tomとtomは同じ");
}
else {
    System.out.println("tomとtomは違う");
}

Animal tom2 = new Cat("Tom");
if (tom.equals(tom2)) {
    System.out.println("tomとtom2は同じ");
}
else {
    System.out.println("tomとtom2は違う");
}

Stringクラスの文字列の比較

  • equalsメソッドは、文字列の内容で比較する
  • ==演算子は、オブジェクト自体が同一かで比較する
// 次の場合、==でもtrueになる。
//      String s1 = "ABC";
//      String s2 = "ABC";

// 次の場合、==はfalseになる。
String s1 = new String("ABC");
String s2 = new String("ABC");

// equalsメソッドで比較
if (s1.equals(s2)) {
    System.out.println("s1とs2は同じ");
}
else {
    System.out.println("s1とs2は違う");
}

// == 演算子で比較
if (s1 == s2) {
    System.out.println("== s1とs2は同じ");
}
else {
    System.out.println("== s1とs2は違う");
}

ラッパークラス

基本データ型に対応したJavaのクラス

// ラッパー(wrapper)には、nullが入る
Integer i1 = new Integer(100);
int int1 = i1.intValue();
System.out.println("int1=" + int1);
Integer i2 = Integer.valueOf(200); 
int int2 = i2.intValue();
System.out.println("int2=" + int2);
Integer i3 = 300;
System.out.println("i3=" + i3);

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください