一、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用单独文章总结。