感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Javaのセットは集合の概念をプログラミングに持ち込んだもの。サンプルを書いてみる。

<スポンサーリンク>

セットとは、重複のない要素の集まりのこと。
データは順不同で管理していて、重複オブジェクトの保持はできない。

せっかく「CANSAY NUboard
を買ったので図を書いてみると、こんな感じ。
f:id:sho322:20131214165148j:plain

Setインターフェースを実装しているクラスは以下の通り。

Setインターフェースの実装 意味
HaseSet データ項目へのアクセスはTreeSetよりも高速であるが、、データ項目を順序付けることはできない。ソートも順序付けも行われないことが前提となる。
LinkedHashSet LinkedHashSetは、HashSetと同等の機能に加えて、すべてのデータ項目に対する二重リンクリストを追加したもの。順序付けられたコレクションの一種ではあるが、その順序は挿入順であって、ソートされるのではない。
TreeSet SortedSetインターフェースの実装クラスである。ソートされたデータ項目が得られるが、アクセス速度はHashSetよりも低速である。

Setインターフェースの代表的なメソッドはこちらになる。

メソッド名 意味
add 要素の追加
contains 要素の存在チェック
remove 要素を削除
size 要素数

コード例はこんな感じになる。

package kiso;

import java.util.HashSet;
import java.util.Set;

public class Sample {
    public static void main(String[] args) {
        //Setを使ってみる
        Set<String> set = new HashSet<String>();
        set.add("Java");
        set.add("Ruby");
        set.add("Python");
        set.add("PHP");
        //重複を許しているか?
        boolean isAdd = set.add("Java");
        System.out.println("Javaは2つ追加できる?→" + isAdd);
        isAdd = set.add("JavaScript");
        System.out.println("新しいのを追加すると・・・→" + isAdd);
        //取り出してみる
        for (String val : set) {
            System.out.println(val);
        }
    }
}

実行すると、結果は以下の通り。

Javaは2つ追加できる?→false
新しいのを追加すると・・・→true
PHP
Ruby
Python
JavaScript
Java

重複して要素を持つことはできないことがわかった。

ちゃんと勉強するなら

パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)

パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)

Javaのバイブル的な本。何回でも褒めるけど、良い物はいい。
この本にはいつも救われてる。