使用ArrayList代理进行Map的排序

Categories: Java; Tagged with: ; @ January 28th, 2009 18:18

某Map中散乱的存放着如下信息:

abce.com (1), cde.com (1), abc.com (3), def.com (1), abd.com (2), sfaf.com (1), bcd.com (2)

为了进行排寻 使用ArrayList的sort进行排序.

通过new ArrayList(collection) 将Map中的Value引用到新建立的ArrayList中,

		//--以下为排序
		ArrayList alDomains = new ArrayList();
		alDomains = new ArrayList(domains.values());
		System.out.println(alDomains);
		Collections.sort(alDomains, null);
		System.out.println(alDomains);

打印:

[abce.com (1), cde.com (1), abc.com (3), def.com (1), abd.com (2), sfaf.com (1), bcd.com (2)] – 排序前

[abc.com (3), abce.com (1), abd.com (2), bcd.com (2), cde.com (1), def.com (1), sfaf.com (1)] – 排序后

HashSet – 覆盖equals, hashCode

Categories: Java; Tagged with: ; @ January 28th, 2009 17:57

覆盖equlas 和hashCode两函数, 获得更自由的控制.

某set, 存一些Email, 如下:
[email protected] 
[email protected]
[email protected]
[email protected]
[email protected]

很明显, 一共3个不同邮箱,

现在创建了Email类, 需要将这帮Email放入一个HashSet中, 当然,

[email protected]
[email protected]
[email protected]
[email protected]
这几个是一模一样的, 都是[email protected]

因此需要重写Email的equlas 和hashCode两个函数, 以便保证Set的唯一性.

代码:

	//重写equals
	public boolean equals(Object obj) {
		if(this == obj) {
			return true;
		}
		
		final Email email = (Email)obj;
		
		if(this.pB.equals(email.pB) && this.pA.equalsIgnoreCase(email.pA)) {
			return true;
		}else {
			return false;
		}
	}
	
	//重写hashCode
	public int hashCode() {
		int result;
		result = pB.hashCode() + pA.toLowerCase().hashCode();
		return result;
	}

在Email外部将这开始提到的这帮email建立为Email类, 并加入到某Set中,

注意: 为了保证HashSet正常工作, 要求当两个对象用equals()方法比较结果为True时, 起hashCode也必须相同, 因此覆盖了equals之后 必须覆盖hashCode.

结果是该Set的size为3 – 达到要求….

Cascade与Inverse

Categories: DatabaseJava; Tagged with: ; @ January 10th, 2009 0:32

在Hibernate 或一些类似框架中, 常常会有这样一个无聊的问题: Cascade与Inverse的区别.

但事实上这个问题首先需要承认他们有相同点,才能有类似的问题, 但这两者之间我个人认为几乎没有关系 – 他们是不同的两个事物.

Cascade意在是否在一方变化时, 另外关系一方是否随之变化

而Inverse则说明该关系由哪一方负责维系

—-我不认为他们有什么区别 以为他们根本没有相似之处

Cascade常见的两种:

ALL – 非常强的关系, 通常为拥有型, 如 学生拥有地址, 在学生保存时, 其地址也被保存, 当被删除时, 地址也随之删除

PERSIS – 较强的关系, 如学生跟科目, 当新的科目保存时, 学生也被保存, 但删除科目时, 学生信息并不随之删除.

Inverse:

默认为False.

当关系为一对多时, inverse应设置为true, 意味有对方负责维系关系

Newer Posts



// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.