Java集合类的区别及相关用法

发表于:2016-12-30 11:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:搬砖工    来源:51Testing软件测试网采编

  一、java集合类是什么?java集合类型主要有哪些?
  首先看一张概念图,这里囊括了集合类的大部分关系及内容
  集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
  通俗地讲,集合类就是把一些对象的引用放在一起(特别是我们需要存放一些数据却不知道个数的情况下),便于我们直接从集合中使用这些引用。通常来说,集合内所包含的引用,都是具有某种特性。
  集合类型主要有3种:set(集)、list(列表)和map(映射)。
  注意:Set、Map和List都是接口,并没有具体实现。
  二、set、list和map的区别有哪些?
  用一个表格总结一下
  List和Set是继承了Collection接口,List有序且允许元素重复,Set不允许元素重复。ArrayList、LinkedList和Vector是List的三个主要的实现类,HashSet和TreeSet是Set的两个主要的实现类。
  Map则是与List和Set有所不同,区别就在于Map是键与值之间的关系,而其中的键我们就可以看做是一个集合。其中的键是必须唯一的,而值可以重复。
  三、详细解析
  1、Collection常用方法
Collection coll=new ArrayList();
Collection coll2=new ArrayList();
Object[] a = {new Integer(1)};
//单元素操作
boolean b = coll.add("123");//添加元素
boolean b1 = coll.remove("123");//删除元素
//查询操作
int i = coll.size();//返回当前集合中元素的数量
boolean b2 = coll.isEmpty();//判断集合中是否有任何元素
boolean b3 = coll.contains("123");//查找集合中是否含有对象"123"
Iterator ite = coll.iterator();//返回一个迭代器,用来访问集合中的各个元素
//组操作
boolean b4 = coll.containsAll(coll2);//查找集合中是否含有集合coll2中所有元素
boolean b5 = coll.addAll(coll2);//将集合coll2中所有元素添加给该集合
coll.clear();//删除集合中所有元素
boolean b6 = coll.removeAll(coll2);//从集合中删除集合coll2中的所有元素
boolean b7 = coll.retainAll(coll2);//从集合中删除集合coll2中不包含的元素
//Collection转换为Object数组
Object[] obj = coll.toArray();//返回一个内含集合所有元素的array
//返回一个内含集合所有元素的array。运行期返回的array和参数a的型别相同,需要转换为正确型别。
Object[] obj1 = coll.toArray(a);
  2、List的常见用法
  List普通用法:
List list = new ArrayList();
//添加元素
list.add(1);
//在2处添加元素
list.add(2, 1);
//添加集合
list.addAll(new ArrayList());
//在3处添加集合
list.addAll(3,new ArrayList());
//取得1处的元素
Object obj = list.get(1);
//返回对象"1"第一次出现的位置,没有则为-1
int i= list.indexOf(1);
//返回对象"1"最后一次出现的位置,没有则为-1
int j= list.lastIndexOf(1);
//删除2位置的元素
list.remove(2);
//将1处的对象改为"2"
list.set(1, 2);
  List特殊用法:
List list = new ArrayList();
//返回一个列表迭代器,用来访问列表中的元素
ListIterator listIterator = list.listIterator();
//返回一个列表迭代器,用来从指定位置2开始访问列表中的元素
ListIterator listIterator2 = list.listIterator(2);
//从1(包含)到2(不包含)范围中各个元素的列表视图
List subList = list.subList(1, 2);
  LinkedList的特殊用法:
//构建一个空的链接列表
LinkedList list = new LinkedList();
//构建一个空的链接列表,并且添加集合list的所有元素
LinkedList list1 = new LinkedList(list);
//将对象1加到列表开头,addLast()加到最后
list.addFirst(1);
//获得第一个元素,getLast()获得最后一个元素
Object obj = list.getFirst();
//移除第一个元素,removeLast()移除最后一个元素
list.removeFirst();
  ArrayList的特殊用法:
ArrayList list = new ArrayList();
//将ArrayList对象容量增加5
list.ensureCapacity(5);
//整理ArrayList对象容量为列表当前大小,程序可使用这个操作减少ArrayList对象存储空间.
  list.trimToSize();
  tips:内容比较多,set和map用单独文章总结。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号