Home > スポンサー広告 > Java コレクションについて些細な事

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Comments:-

Comment Form

Trackback+Pingback:-

TrackBack URL for this entry
http://netforestdevnote.blog26.fc2.com/tb.php/7-5b31ae02
Listed below are links to weblogs that reference
スポンサーサイト from Netforest Developer's Note

Home > スポンサー広告 > Java コレクションについて些細な事

Home > プログラミング基礎 > Java コレクションについて些細な事

Java コレクションについて些細な事

どうもーガッツでございます。
やっと巨人が勝ちました。今日はクルーンいい結果で良かったです!
それと甲子園ではすごい試合になってまして、非常に面白い内容だったみたいです。
去年行ってないので今年は1回ぐらい野球見に行きたいものです。

これで2回目のエントリーなります。
今回はJavaのコレクションについて少し書いていこうと思います。

コレクションを扱う際に気をつける点

気をつけなければいけない点として、コレクションのデータの格納は実際のデータを コピーするのではなく、そのデータへの参照を作成することでデータを格納しているという点です。
(コレクションに限ったことではないですが)
参照渡しなので当り前なのですが、プログラムの別の部分がそのコレクションデータへの参照を持っている可能性があるということを、自分は忘れてしまってハマったことがありましたので・・・。

もう一点

顧客が購入した商品を表示する。という場合に次のクラスを用意して 考えてみます。


Customerクラス

public class Customer implements Serializable
{
	private String name;
	
	private Set<Purchase>purchaseList;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void SetPurchaseList(Set<Purchase> purchaseList)
	{
		this.purchaseList = purchaseList;
	}
	
	public Set<Purchase> getPurshaseList()
	{
		return purchaseList;
	}
}


Reportクラス

public class Report {
	public static void makeReport(Customer customer)
	{
		if (customer == null) {
			throw new NullPointerException();
		}
		
		// 顧客名の表示
		System.out.println("購入者:" + customer.getName());
		
		Set<Purchase> purchaseList = customer.getPurshaseList();
		
		// 購入商品の表示
		System.out.println("購入商品:");
		if (purchaseList != null) {
			for (Purchase purchase : purchaseList)
			{
				System.out.println(purchase.getName());
			}
		}
		
		// 購入数の表示
		System.out.println("購入数:");
		if (purchaseList != null) {
			System.out.println(purchaseList.size());
		}
		else {
			System.out.println(0);
		}
	}
}


ReportクラスのmakeReportメソッドは顧客の購入商品を表示する役割がありますが、 購入商品のリスト(purchaseList)に対して常にnullかどうかチェックを行っていて、少し冗長になってしまっています。CustomerクラスのpurchaseListが初期化されていない可能性があるため、nullチェックを行わなければならなくなっています。

この場合、Customerクラスの5行目を

private Set<Purchase> purchaseList;
↓
private Set<Purchase> purchaseList = new HashSet<Purchase>();
とすることで、makeReportメソッドでのpurchaseListのnullチェックはいらなくなります。(CustomerクラスのsetPurchaseListでnullがセットされないことが前提ですが。)

こんな感じで、コレクションはデータがない場合には空をセットしておいたほうがいい場合もあるのではと思いました。


というわけで以上です。

Comments:0

Comment Form

Trackback+Pingback:0

TrackBack URL for this entry
http://netforestdevnote.blog26.fc2.com/tb.php/7-5b31ae02
Listed below are links to weblogs that reference
Java コレクションについて些細な事 from Netforest Developer's Note

Home > プログラミング基礎 > Java コレクションについて些細な事

Recent Comments
Recent Trackback
Search
Meta
Links
Feeds

Page Top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。