某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中,
//--以下为排序 ArrayListalDomains = 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)] – 排序后
覆盖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 – 达到要求….
在Hibernate 或一些类似框架中, 常常会有这样一个无聊的问题: Cascade与Inverse的区别.
但事实上这个问题首先需要承认他们有相同点,才能有类似的问题, 但这两者之间我个人认为几乎没有关系 – 他们是不同的两个事物.
Cascade意在是否在一方变化时, 另外关系一方是否随之变化
而Inverse则说明该关系由哪一方负责维系
—-我不认为他们有什么区别 以为他们根本没有相似之处
Cascade常见的两种:
ALL – 非常强的关系, 通常为拥有型, 如 学生拥有地址, 在学生保存时, 其地址也被保存, 当被删除时, 地址也随之删除
PERSIS – 较强的关系, 如学生跟科目, 当新的科目保存时, 学生也被保存, 但删除科目时, 学生信息并不随之删除.
Inverse:
默认为False.
当关系为一对多时, inverse应设置为true, 意味有对方负责维系关系
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.