Collection/List/Set

来源:互联网 发布:linux vps speedtest 编辑:程序博客网 时间:2024/06/06 01:02
===========
Collection  的总结
===========
它是一个接口,一个根接口,一个ROOT接口;
Collection层次结构中的根接口;Collection表示的是一组对象,那么那些对象就是Collection中的元素,或者是组成部分;
一些collection实现对它们可能包含的元素有所限制。例如某些实现不能为null;当存在那样情况的时候,就会抛出NullPointerException或者ClassCastException的错误。会出现这类异常的方法,在文档上面标有“可选”。
关于如何避免出现这类异常,那么就是要注意NULL值的使用,当需要引用该对象的方法时候,需要确保该对象已经被实例化。(当一些对象的值为NULL的时候,就会视为没有被实例化的。★)

当这个接口被实现之后,它就可以用来存放各类对象。这些对象在集合里面可以有排序的,可以有不是排序的,可以有重复的,也可以不能重复的;这些具体功能是通过它的子类,子接口来实现的。。
要是想用尽可能常规简单的方法的时候,可以选择Collection;

关于Collection接口的常用方法
    添加元素的是   boolean add(Object element);
    删除元素的是   boolean remove(Object element);
    通过迭代器输出元素  Iterator 
例子:
import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class Test_Collection {public static void main(String[] args) {String string = null;// 创建一个用于测试的,存放在集合里面的对象Collection<String> ccc = new ArrayList<String>();// 创建一个集合,存放的类型设定为String类型// 增加for (int i = 0; i < 10; i++) {ccc.add("" + i); // 使用Collection的方法add(),添加新的元素}// 查询;输出System.out.println("Collection集合中的元素有" + ccc);// 删除,输出ccc.remove("3");// 删除值为:3的元素System.out.println("删除之后,Collection集合中的元素有" + ccc);//isEmpty()System.out.println("ccc.isEmpty()的值为:"+ccc.isEmpty());//size()System.out.println("ccc.size()的值为:"+ccc.size());//迭代器,iteratorIterator<String> iter = ccc.iterator();System.out.println("检查是否有元素可以迭代:"+iter.hasNext());int a = 0;while (iter.hasNext()) {a++;System.out.println("第"+a+"个元素的值为:"+iter.next());//迭代器的next()方法}}}
输出的结果:
Collection集合中的元素有[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
删除之后,Collection集合中的元素有[0, 1, 2, 4, 5, 6, 7, 8, 9]
ccc.isEmpty()的值为:false
ccc.size()的值为:9
检查是否有元素可以迭代:true
第1个元素的值为:0
第2个元素的值为:1
第3个元素的值为:2
第4个元素的值为:4
第5个元素的值为:5
第6个元素的值为:6
第7个元素的值为:7
第8个元素的值为:8
第9个元素的值为:9

============
List
============
它是Collection接口的子接口;一个允许重复的、有序集合;
相对于collection接口而言,List接口具有其他的高效的功能;

在向List集合中插入新的数据的时候,会给每个元素索引。每个元素都有唯一的序号,方面用                    于修改、查询、删除等,非常的高效;

对于ArrayList类的使用比较熟悉,相对于数组而言,觉得非常的高效;

例子:

import java.util.ArrayList;import java.util.List;import java.util.ListIterator;public class Test_List {public static void main(String[] args) {String string = null;// 创建一个用于测试的,存放在集合里面的对象List<String> listStrings = new ArrayList<String>();for (int i = 0; i < 10; i++) {listStrings.add("" + i);}// 输出所有的元素System.out.println(listStrings);// 利用listIterator()方法,返回类型为ListIterator的元素,可以实现单个元素的输出;元素的序列号ListIterator<String> listIteratorstring = listStrings.listIterator();System.out.println("第一个元素的值为:" + listIteratorstring.next());System.out.println("第二个元素的值为:" + listIteratorstring.next());System.out.println("第三 个元素的值为:" + listIteratorstring.next());}}

输出是:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
第一个元素的值为:0
第二个元素的值为:1
第三 个元素的值为:2

=============
Set
=============
它是Collection接口的子接口;它是不允许重复的一个集合;
取与其他的文档资料:

 

简述

实现

操作特性

成员要求

Set

成员不能重复

HashSet

外部无序地遍历成员。

成员可为任意Object子类的对象,但如果覆盖了equals方法,同时注意修改hashCode方法。

TreeSet

外部有序地遍历成员;

附加实现了SortedSet, 支持子集等要求顺序的操作

成员要求实现Comparable接口,或者使用Comparator构造TreeSet。成员一般为同一类型。

LinkedHashSet

外部按成员的插入顺序遍历成员

成员与HashSet成员类似

例子是:
import java.util.HashSet;import java.util.Set;public class Test_Set {public static void main(String[] args) {Set<String> set = new HashSet<String>();//下面两个if判断,比较说面SET集合中,不允许元素重复的特性;if (set.add("0")) {System.out.println("Success!");}if (set.add("0")) {System.out.println("Failure!");}}}
输出是:
Success!