`

(转)Collection之间的转化

 
阅读更多

转自:http://zhouhaitao.iteye.com/blog/669318

数组转Collection

使用Apache Jakarta Commons Collections:

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

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

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

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

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

 

★ Collection转数组

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

  1. Object[] toArray();   
  2.   
  3. 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的这两个方法是合适的,他就不会去覆盖。  

分享到:
评论

相关推荐

    ObjectCollectionJSON之间的转换

    在Java编程中,Object、Collection和JSON之间的转换是常见的需求,特别是在数据交换和序列化过程中。这些类型之间的转换有助于在应用程序的不同部分之间传递和存储数据。以下是对这些转换的详细说明,以及涉及到的...

    java中实体类和JSON对象之间相互转化

    Java中关于Json格式转化Object,Map,Collection类型和String类型之间的转化在我们实际项目中应用的很是普遍和广泛。最近工作的过程中也是经常有,因此,自己封装了一个类分享给大家。

    dotnet-V5数据采集器V5DataCollection

    通过定制化的配置,用户可以针对特定的目标网站和数据格式,实现精确的数据抓取和清洗,进一步转化为有价值的信息。 综上所述,dotnet-V5数据采集器V5DataCollection以其强大的功能、易用的界面和代理轮询采集机制...

    Java JSON与Object互转源代码

    高效的JSON与Object互转的工具源代码,如果JSON数据未按该工具规定的数据格式转化成对象,将转化成java.util.Map实例。 (比JSON官方的API更适用。支持对象之间的多级引用,支持Map, List等集合。不需要引用其它中间...

    (ebook - english) RMS, GNU Compiler Collection Internals for GCC 3.4.pdf.zip

    《RMS, GNU Compiler Collection Internals for GCC 3.4》是一本深入探讨GNU Compiler Collection(GCC)内部机制的专业书籍,特别关注了GCC 3.4版本。GCC是开源社区开发的一个广泛使用的编译器套件,它支持多种编程...

    Dance MoCap Collection.rar

    根据“Dance MoCap Collection”的命名,我们可以推测其可能采用的是BVH格式,这是一种通用的3D骨架动画数据格式,包含了关节的位置和旋转信息,易于在各种软件之间交换。 四、数据集的使用步骤 1. 解压缩:首先,...

    Laravel开发-laravel-recursive-collection

    "laravel-recursive-collection"项目就是针对这类问题的一个解决方案,它提供了将这些复杂数据结构转化为可操作的嵌套集合(Collections)的方法。 Laravel的集合(Collections)是PHP中的迭代器对象,提供了许多...

    6.集合collection1

    此外,迭代器和集合更新之间的影响也被消除,提高了代码的清晰度。 安全性方面,Scala集合的静态类型系统和函数式编程风格确保了许多潜在的错误可以在编译时就被捕获。这减少了运行时错误的可能性,提高了代码质量...

    SMS Spam Collection Data Set

    【标题】"SMS Spam Collection Data Set" 是一个用于短信分类的机器学习数据集,主要目的是帮助我们理解如何利用机器学习算法来识别垃圾短信(spam)。 【描述】提及的"Python机器学习:朴素贝叶斯那一章"指出,这...

    Audio-data-collection.rar_源码

    在"Audio-data-collection.rar_源码"这个压缩包中,包含了一个名为"音频数据的采集.pdf"的文档,这应当是关于如何在C6713开发板上进行数字音频采集的详细教程。 数字音频采集是将模拟音频信号转换为数字形式的过程...

    Amibroker AFL Collection_Part3_amibrokerafl_aflcollection_

    "Amibroker AFL Collection_Part3_amibrokerafl_aflcollection_"是一个压缩包,包含了多份AFL代码文件,这些文件为交易者提供了丰富的技术分析工具。 1. _Gordon Rose pivot.afl:这个文件可能是Gordon Rose的枢轴...

    Json转化为Java对象的实例详解

    当你需要将JSON字符串解析为一个List时,可以使用`JSONArray`类的`fromObject`方法将JSON字符串转化为`JSONArray`对象,然后通过`toCollection`方法将其转化为List: ```java String jsonString = "{\"list\":[{\...

    Temperature collection and display.zip_labview_labview电压温度_stm32

    读取到的数据可以被解析并转化为温度和电压值,随后在LabVIEW的前面板上以图表或者指示器的形式实时显示出来,为用户提供直观的观测界面。 在实际操作中,我们还需要关注数据的同步问题。由于STM32与LabVIEW之间的...

    JSON 字符串 与 java 对象的转换

    List<InvoidPerson> persons = (List) JSONArray.toCollection(json, InvoidPerson.class); ``` #### 4. JSON字符串转换为Java对象 ```java String str = "{\"lendperson\":\"李四\",\"lendcompany\":\"有限公司\...

    JSON-lib

    3. **Collection到JSON**:JSON-lib也支持将List或Array转换为JSON数组。例如,`JSONArray.fromObject(List)`或`JSONArray.fromObject(Object[])`可实现此转换。 4. **XML到JSON**:除了处理Java对象,JSON-lib还...

    json-lib-2.4-jdk15及其附属jar

    3. **XML与JSON互转**:提供了XML与JSON之间的转换功能,使得在XML和JSON之间进行数据交换变得更加方便。 4. **支持复杂类型**:除了基本数据类型,`json-lib`还支持日期、自定义类等复杂类型的转换。 5. **性能优化...

    cj-client:基于https的Collection + JSON客户端

    1. **数据解析**: 能够解析服务器返回的`Collection + JSON`格式的数据,并转化为易于操作的JavaScript对象。 2. **HTTP请求**: 使用HTTPS协议与服务器进行安全通信,支持GET、POST、PUT、DELETE等HTTP方法。 3. **...

    json-lib-2.4-jdk15.jar及其相关依赖

    2. **转化对象**: 使用`JsonConfig`配置对象,可以设置转化时的一些参数。然后使用`JSONArray.fromObject()`或`JSONObject.fromObject()`方法将Java对象转换为JSON。 例如,将一个简单的Java Bean转换为JSON: ```...

    阿里巴巴fastjson的jar包

    1. **JSON到Java对象的转换**:Fastjson可以将JSON字符串解析为Java对象,如String、JavaBean、Collection、Map等。例如,通过`JSON.parseObject(jsonStr, YourClass.class)`可以将JSON字符串转化为指定类型的实例。...

    自写二进制转换工具

    这个工具能识别最高32位的数据,这意味着它可以处理最大值为2^32-1(即4294967295)的无符号整数或范围在-2^31到2^31-1之间的有符号整数。32位数据通常与传统的32位处理器架构相关联,但现在在64位系统中也被广泛...

Global site tag (gtag.js) - Google Analytics