★ 数组转Collectionjava
使用Apache Jakarta Commons Collections:apache
CollectionUtils.addAll()方法的实现很简单,只是循环使用了Collection的add()方法而已。数组
若是只是想将数组转换成List,能够用JDK中的java.util.Arrays类:spa
不过Arrays.asList()方法返回的List不能add对象,由于该方法的实现是使用参数引用的数组的大小来new的一个ArrayList。对象
★ Collection转数组继承
直接使用Collection的toArray()方法,该方法有两个重载版本:内存
★ Map转Collectionelement
直接使用Map的values()方法。hash
★ List和Set转换io
List list = new ArrayList(new Hashset());// Fixed-size list
List list = Arrays.asList(array);// Growable
list list = new LinkedList(Arrays.asList(array));// Duplicate elements are discarded
Set set = new HashSet(Arrays.asList(array));
//=============================================================//
---------------------------------------------------------------
List list = new ArrayList(new Hashset());
Set set = new HashSet(list);
---------------------------------------------------------------
// Fixed-size list
List list = Arrays.asList(array);
// Growable list
list = new LinkedList(Arrays.asList(array));
// Duplicate elements are discarded
Set set = new HashSet(Arrays.asList(array));
//========================================================//
import java.util.*;
public class test3 {
public test3() {
}
public static void main(String[] args){
String xx = new String("1");
String yy = new String("2");
List list = new ArrayList();
list.add(xx);
Set set = new HashSet(list);
System.out.println(set.contains(xx));
System.out.println(set.contains(yy));
}
}
——————————————————————————————————
true
false
//================================================================//
解释一下 Object的hashCode返回值基本上是对象的内存地址 Object的equals方法判断两个Object对象是否“相等”的依据实际上是两个对象是否“相同” 因此,若是obj1 和 obj2 都是Object实例,那么 obj1.equals(obj2) 和 obj1 == obj2 是等价的 equals和hashCode这两个方法的关系是: 若是两个对象equals返回true,那么它们的hashCode必须返回相同的integer值。反之,则不作要求,但建议是:若是它们返回相同的hashCode,那么equals应该返回true。 由于上面的缘由,若是某个类覆盖了Object的equals方法,那它就必须覆盖hashCode方法,以知足上述要求。 对于本身定义的类,是否要覆盖这些方法,彻底取决于本身的须要,若是须要放宽两个对象相等的条件,就须要覆盖。若是不须要,就用Object的实现好了,彻底没有问题。 例如,对于Integer类,它须要将两个Integer相等的条件放宽到只要它们包含的数值相等,两个对象就相等,它就会覆盖equals方法,同时,它必须覆盖hashCode方法,返回值很简单,就是它包含的整型值。 再例如,Thread类就没有覆盖这两个方法,它做为Object的直接继承,写Thread类的人认为继承使用Ojbect的这两个方法是合适的,他就不会去覆盖。