`

Set和List如何转换 (转)

    博客分类:
  • j2se
阅读更多

数组转Collection

使用Apache Jakarta Commons Collections:

  1. import org.apache.commons.collections.CollectionUtils;
  2. String[] strArray = {"aaa", "bbb", "ccc"};
  3. List strList = new ArrayList();
  4. Set strSet = new HashSet();
  5. CollectionUtils.addAll(strList, strArray);
  6. CollectionUtils.addAll(strSet, strArray);

CollectionUtils.addAll()方法的实现很简单,只是循环使用了Collection的add()方法而已。

如果只是想将数组转换成List,可以用JDK中的java.util.Arrays类:

  1. import java.util.Arrays;
  2. String[] strArray = {"aaa", "bbb", "ccc"};
  3. List strList = Arrays.asList(strArray);

不过Arrays.asList()方法返回的List不能add对象,因为该方法的实现是使用参数引用的数组的大小来new的一个ArrayList。

 

Collection转数组

直接使用Collection的toArray()方法,该方法有两个重载版本:

  1. Object[] toArray();
  2. T[] toArray(T[] a);

 

Map转Collection

直接使用Map的values()方法。

 

List和Set转换

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的这两个方法是合适的,他就不会去覆盖。

 

分享到:
评论

相关推荐

    java List、Set与Array之间的相互转换

    - **Set转Array**: 与List相似,你可以先将Set转换为List,再将List转换为Array: ```java Set<String> set = ...; List<String> list = new ArrayList(set); String[] array = new String[list.size()]; list...

    set转成list集合再排序输出

    Java相关 public static void main(String[] args) { User u1=new User(1, "zhangsan"); User u2=new User(2, ... Set userset=new HashSet(); userset.add(u1); userset.add(u2); userset.add(u3);

    list,set,map,数组间的相互转换

    // 将List转换为Set Set<String> set = new HashSet(list); // 输出结果 System.out.println(set); // 输出: [orange, banana, apple] } } ``` ### 2. Set到List的转换 同样地,我们也可以将一个`Set`转换为...

    C#数组中List, Dictionary的相互转换问题

    将List转换为数组 将数组转换为Dictionary 将Dictionary 转换为数组 将List转换为Dictionary 将Dictionary转换为List 首先这里定义了一个“Student”的类,它有三个自动实现属性。 class Student { public ...

    java中List、Array、Map、Set等集合相互转换

    Java 中 List、Array、Map、Set 等集合相互转换 在 Java 中,集合类型的转换是非常常见的操作,例如将 List 转换为 Array、将 Array 转换为 List、将 Map 转换为 List 等等。今天,我们将详细介绍 Java 中 List、...

    测试报告与总结\list,set,map,数组间的相互转换

    测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar测试报告与总结\list,set,map,数组间的相互转换.rar

    java list,set,map,数组间的相互转换详解

    要将一个List转换为Set,可以使用HashSet的构造函数,它接受一个Collection作为参数。例如: ```java List<String> list = new ArrayList(); // 添加元素到list Set<String> set = new HashSet(list); ``` ...

    list,set,map,数组之间的相互转换详细解析

    然而,需要注意的是,不同数据结构间的转换可能会改变原有的顺序,比如List转Set时会丢失原有顺序,因为Set不保证元素的顺序。此外,数组转换成List或Set时,如果数组包含null元素,转换后的集合可能不包含这些null...

    java XML转成LIST可以转成指定的类数组

    当处理XML文件时,有时我们需要将其内容转换为Java对象,如List,以便于操作和处理。本篇文章将深入探讨如何将XML转换为指定类型的List数组,并涉及多层数据结构的处理。 1. **Java XML解析库** 在Java中,有多种...

    Java 在 Array 和 Set 之间进行转换的示例.rar

    在Java编程语言中,Array和...了解这些转换方法和特性后,开发者可以根据项目需求灵活地在Array和Set之间切换,优化代码性能和功能。在处理数据结构时,选择合适的容器是非常关键的,这直接影响到程序的效率和可读性。

    JAVA中list,set,数组之间的转换详解

    要将List转换为Set,可以直接使用Set的构造函数,如`new HashSet(list)`,这将自动去除重复元素。反过来,将Set转换为List,可以创建一个新的List,然后遍历Set并添加到新List中,或者使用`new ArrayList(set)`,但...

    java List XMl转换DEMO

    有时,我们需要将List对象转换为XML字符串,或者将XML数据解析为List对象。这个“java List XMl转换DEMO”就是用来演示这两个过程的实例。 首先,我们来讨论如何实现`List2XML`。在Java中,我们可以使用DOM...

    Set-List-Map.rar_DEMO_list set map

    4. 可能还有关于集合转换的示例,如从`List`转为`Set`,或者将`Map`的键或值转化为`List`。 5. 最后,可能包含了集合的遍历策略,如迭代器、增强for循环(foreach)以及流API的使用。 通过这个压缩包的学习,初学...

    MapStruct实体转换及List转换的方法讲解

    MapStruct实体转换及List转换的方法讲解 MapStruct是一个Java库,用于简化实体对象之间的映射。它提供了简单、灵活和高效的方式来实现实体对象之间的转换。MapStruct支持多种映射方式,包括单个对象的映射、列表的...

    C#将List与xml互转_支持简单类型.rar

    这个压缩包"**C#将List与xml互转_支持简单类型.rar**"包含了一个示例文本文件"**C#将List与xml互转_支持简单类型.txt**"和一个可能用于测试的数据文件"**1.xls**"。 首先,让我们理解List和XML的基本概念。List是...

    如何将Reader转换成集合List和实体Model

    在Java编程中,`Reader`接口是用于读取字符流的一种抽象类,它提供了一种方式来处理文本数据。...以上就是如何从`Reader`转换为`List`和实体模型的基本方法,这些知识在处理大量文本数据时非常有用。

    map/list集合转化成xml字符串 xml字符串转化成map/list集合

    本篇文章将详细介绍如何将Map和List集合转换为XML字符串,以及如何将XML字符串反向转换回Map和List集合。 首先,让我们探讨`Map`集合转成XML字符串的过程。一个`Map`对象存储键值对,可以使用各种库如`JAXB (Java ...

    xml格式的字符串转换成List

    这篇博客“xml格式的字符串转换成List”提供了相关的方法和步骤,以下是对这个主题的详细讲解。 首先,理解XML字符串。XML字符串是由一系列标签、属性和内容组成的,这些元素按照特定的规则组织,用于描述数据的...

    Xml转换为集合list实例代码.rar

    在C#编程中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,而集合List是.NET Framework中的一个常用数据结构,用于存储同一...如果需要,你可以查阅这个文件来加深对XML到List转换的理解。

    List<Map>转化为List工具类

    一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List, Object&gt;&gt;结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List, Object&gt;&gt;转化为JavaBean工具类...

Global site tag (gtag.js) - Google Analytics