1.集合体系:
分类:分为Collection和Map两种体系
Collection接口:
set集合:元素无序,不和重复的集合
list集合:可重复的集合
Map接口:有映射关系“key-value”的集合
2.Collection:
Collection接口是List、Set 和Queue接口的父接口,该接口里定义的方法既可用于 *** 作Set集合,也可用于 *** 作List和Queue集合。
2.1 List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。List容器中的元素都对应一个整数型的序号记载其在容器中的位置,
可以根据序号存取容器中的元素。JDK API中List接口的实现类常用的有: ArrayList、 linkedList和Vector。
public static void main(String[] args) { Collection c=new ArrayList(); //虽然集合里不能放基本类型的值,但Java支持自动装箱 //添加元素 c.add("孙悟空"); c.add(6); System.out.println("c集合的元素个数为:"+c.size()); //删除指定元素 c.remove(6); System.out.println("c集合的元素个数为:"+c.size()); //判断是否包含指定字符串 System.out.println("c集合是否包含"孙悟空"字符串:"+c.contains("孙悟空")); c.add("Java"); System.out.println("c的集合元素:"+c); Collection books=new HashSet(); books.add("Java"); books.add("C++"); System.out.println("c集合是否完全包含books集合?"+c.containsAll(books)); //用c集合减去books集合里的元素 c.removeAll(books); System.out.println("c的集合元素:"+c); //删除c集合里的所有元素 c.clear(); System.out.println("c的集合元素:"+c); System.out.println("books的集合元素:"+books); //books集合里只剩下c集合里也包含的元素 books.retainAll(c); System.out.println("books的集合元素:"+books); }
输出
3.Iterator接口Iterator则主要用于遍历Collection集合中的元素,Iterator对象称为迭代器。Iterator接口里定义了如下三个方法:
三.Set集合
Set集合不允许包含相同的元素,Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回的是true,Set就不会接受这两个对象;反之,只要两个对象用equals方法比较返回false,Set就会接受这两个对象。
public static void main(String[] args) { //创建集合 Set books=new HashSet(); //添加 books.add(new String("Java")); //books集合两次添加的字符串对象明显不是同一个对象(因为两次都调用了new关键字创建字符串) //这两个字符串使用==运算符判断肯定返回false,但通过equals方法比较则返回true,所以添加失败 boolean result=books.add(new String("Java")); //集合里只有一个元素 System.out.println(result+"--->"+books); }
运行结果:
false--->[Java]
1.HashSet集合(1).HashSet集合的特点
①不能保证元素的排列顺序,顺序有可能发生变化;
②HashSet不是同步的,如果多个线程同时访问HashSet,则必须通过代码保证其同步;
③集合元素可以为null.
(2).HashSet判断集合元素相同的标准
当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的HashCode值,然后根据该HashCode值决定该对象在HashSet中的存储位置。如果两个元素通过equals()方法比较返回true,但它们的hashCode()方法返回值不相等,HashSet将会把它们存储在不同的位置,依然可以添加成功。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)