首页 > 其他分享 >List 集合转成Set 集合..

List 集合转成Set 集合..

时间:2023-04-26 21:31:41浏览次数:22  
标签:Set Arrays List Object list 集合 new asList




数组转Collection

使用Apache Jakarta Commons Collections:


1. import
2.     
3. "aaa", "bbb", "ccc"};    
4. new
5. new
6.  CollectionUtils.addAll(strList, strArray);    
7.  CollectionUtils.addAll(strSet, strArray);




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

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



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


 

 

标签:Set,Arrays,List,Object,list,集合,new,asList
From: https://blog.51cto.com/u_16085616/6228969

相关文章

  • Solution Set - “让季节停止哽咽”
    目录0.「CTT2017」「洛谷P4004」Helloworld!1.「CTT2017」「洛谷P4006」小Y和二叉树2.「CTT2017」「洛谷P4226」避难所3.「AGC023F」01onTree4.「AGC024C」SequenceGrowingEasy5.「UR#1」「UOJ#21」缩进优化6.「JOISC2022」「LOJ#3694」一流团子师傅7.「JOISC......
  • oracle 高级分组 GROUPING SETS
    用SCOTT/TIGER登录。groupingsets就是对参数中的每个参数做group,也就是有几个参数做几次group。SQL:SELECTJOB,DEPTNO,SUM(SAL)FROMEMPGROUPBYGROUPINGSETS(JOB,DEPTNO);结果:......
  • alist 阿里云盘open
    1、首先,要确保你的Alist版本为v3.12.0(或者以上的版本);  2、在电脑的浏览器打开【这个地址】,如果你要输入账号密码那就点“Gotologin”,我这里选择用手机APP扫码所以点“ScanQrCode”(这两种方式都可以,根据自己操作习惯选择);  3、网页会显示一个二维码,打开手机上的阿里云......
  • SQL Injector - GET Manual Setup Binary Payload Attack
    bt5上操作:***********************************************************************Fast-Track-Anewbeginning...****Version:4.0.2......
  • 【go】go语言变量类型 常量 函数基础 函数高级 setuptools将python项目打包 前后端联
    目录昨日回顾使用setuptools将python项目打包前后端联调今日内容1go语言变量类型2常量3函数基础4函数高级补充昨日回顾使用setuptools将python项目打包#https://zhuanlan.zhihu.com/p/624648232#python----》setuptools--》whl包结构 公司内部写了包---》公司内部用---......
  • 后台servlet OrderListSer
    packagecn.service.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.List;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.h......
  • MFC-SetBkMode设置指定DC的背景混合模式
     HDChdc=::GetDC(m_hWnd);LOGFONTlf={0};lf.lfWeight=16;//平均宽度lf.lfHeight=40;//字体高度lf.lfCharSet=GB2312_CHARSET;//字符集lstrcpy(lf.lfFaceName,_T("宋体"));HFONThfont=::CreateFontIndirect(&lf)......
  • MFC-SetTextColor设置指定DC中的文字颜色
     HDChdc=::GetDC(m_hWnd);LOGFONTlf={0};lf.lfWeight=16;//平均宽度lf.lfHeight=40;//字体高度lf.lfCharSet=GB2312_CHARSET;//字符集lstrcpy(lf.lfFaceName,_T("宋体"));HFONThfont=::CreateFontIndirect(&lf);//创建......
  • 解决Python中报错RequestsDependencyWarning: urllib3 (1.26.9) or chardet (5.1.0)/c
      在运行requests包时,出现了以下报错信息:RequestsDependencyWarning:urllib3(1.26.9)orchardet(5.1.0)/charset_normalizer(2.0.12)doesn'tmatchasupportedversion!warnings.warn("urllib3({})orchardet({})/charset_normalizer({})doesn'tmatchasu......
  • ajax中responseText与responseXML区别
    源:http://lou888.blog.hexun.com/46543491_d.html评:一、ajax中responseText与responseXML区别1、"responseText”属性以字符串形式返回HTTP响应;“responseXML”属性以XML形式返回HTTP响应。functiongetTel(){vartelText=document.getElement......