Java中 set,list,array(集合与数组)、Map相互转换



开发工作中经常会用到一些集合或数组类型的转换,这里总结以下:


列表转换数组
public static Object[] List2Array(List<Object> oList) {
        Object[] oArray = oList.toArray(new Object[] {});
        // TODO 需要在用到的时候另外写方法,不支持泛型的Array.
        return oArray;
    }
集合转换数组
    public static Object[] Set2Array(Set<Object> oSet) {
        Object[] oArray = oSet.toArray(new Object[] {});
        // TODO 需要在用到的时候另外写方法,不支持泛型的Array.
        return oArray;
    }
集合转换列表
    public static <T extends Object> List<T> Set2List(Set<T> oSet) {
        List<T> tList = new ArrayList<T>(oSet);
        // TODO 需要在用到的时候另外写构造,根据需要生成List的对应子类。
        return tList;
    }
数组转换列表
    public static <T extends Object> List<T> Array2List(T[] tArray) {
        List<T> tList = Arrays.asList(tArray);
        // TODO 单纯的asList()返回的tList无法add(),remove(),clear()等一些影响集合个数的操作,
        // 因为Arrays$ArrayList和java.util.ArrayList一样,都是继承AbstractList,
        // 但是Arrays$ArrayList没有override这些方法,而java.util.ArrayList实现了。
        // TODO 建议使用List的子类做返回,而不是Arrays$ArrayList。根据需要吧。如下行注释:
        // List<T> tList = new ArrayList<T>(Arrays.asList(tArray));
        return tList;
    }
列表转换集合
    public static <T extends Object> Set<T> List2Set(List<T> tList) {
        Set<T> tSet = new HashSet<T>(tList);
        //TODO 具体实现看需求转换成不同的Set的子类。
        return tSet;
    }


    public static <T extends Object> Set<T> Array2Set(T[] tArray) {
        Set<T> tSet = new HashSet<T>(Arrays.asList(tArray));
        // TODO 没有一步到位的方法,根据具体的作用,选择合适的Set的子类来转换。
        return tSet;
    }
Map转换Set
    Map可以通过tMap.KeySet()和tMap.values()方法将键值转化为Set集合。
    keySet()返回Map中所包含键的Set视图。删除Set中的元素还将删除Map中相应原映射。
    values()返回Map中所包含值的Collection视图。删除Collection中的元素还将删除Map中相应的映射。
    EnterySet()返回Map中所包含映射的Set视图。Set中的每个元素都是一个Map.Entry对象,可以使用getKey()和 getValue()方法访问后者的键元素和值元素。

你可能感兴趣的:(泛型,map,ArrayList)