集合(容器)---Collection笔记
1.表示一组对象,它是集中,收集的意思
2.java.util
3.interface Collection<E>---泛型接口
4.extends Iterable<E>------父接口Iterable,说明Collection的继承类都可以进行迭代
5.常见的子类:List<E>,Set<E>,Deque<E>
6.存储一组不唯一,无序的对象
常见方法:
package com.collectiontest.sample;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* 测试Collection中常见的方法
* @author zhuaisha98kbaoni
*
*/
public class Sample {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>(); //因为Collection为接口,不能实例化
/*
* 像容器中加入值
*/
boolean isInset = collection.add("你是一个笨蛋");
if (isInset) {
System.out.println("插入成功!");
}else {
System.out.println("插入不成功!");
}
collection.add("你没骗我?");
System.out.println(collection);
/*
* 像容器中加入另一个容器的值
*/
Collection<String> collection2 = new ArrayList<>();
collection2.add("你是一只猪");
collection2.add("我才不是猪呢");
collection.addAll(collection2);
System.out.println("容器collection中的值:" + collection);
/*
* 容器中是否包含某个值
*/
String name ="你是一只猪";
boolean include = collection.contains(name);
if (include) {
System.out.println("容器collection中包含" +" " + name);
}else {
System.out.println("容器中不包含 " + name);
}
/*
* 容器中是否包含另一个集合中的所有值
*/
boolean includeAll = collection.containsAll(collection2);
if (includeAll) {
System.out.println("容器collection中包含另一个容器中的所有值");
}else {
System.out.println("容器中collection中不包含另一个容器中的所有值");
}
/*
* 比较指定的对象与此集合进行比较以获得相等性
* 下面的collection,collection3,collection4的哈希地址一样
* collection,collection3当它们中的值一样时,表明它们是同一个对象,因为在Collection集合中规定
* 重写equals方法时,也要重写hashCode方法
* equals方法返回的是:the hash code value for this collection
*/
boolean equivalence = collection.equals(name);
System.out.println(equivalence); //答案是false,表示不是说某个值是否存在于容器中
Collection<String> collection3 = new ArrayList<>();
collection3.add("你是一个笨蛋");
collection3.add("你没骗我?");
collection3.add("你是一只猪");
collection3.add("我才不是猪呢");
boolean equivalence2 = collection.equals(collection3);
System.out.println(equivalence2);
System.out.println("容器collection的哈希地址:" + collection.hashCode());
System.out.println("容器collection3的哈希地址:" + collection3.hashCode());
Collection<String> collection4 = collection;
System.out.println("容器collection4的哈希地址:" + collection4.hashCode());
/*
* 判断集合是否为空
*/
boolean equibalence3 = collection.isEmpty();
System.out.println("容器collection中是否为空:" + equibalence3);
/*
* 迭代集合中的元素
*/
Iterator<String> iterator = collection.iterator();
while (iterator.hasNext()) {
System.out.printf("%s\t",iterator.next());
}
System.out.println();
/*
* 从集合章删除指定元素的单个实例(如果存在)(可选操作)
*/
boolean equibalance4 = collection.remove("你是一只猪");
System.out.println("删除容器中的指定元素是否成功:" + equibalance4);
System.out.println(collection);
/*
* 删除指定集合中包含的所有此集合的元素(可选操作)
* 下面操作的结果为:
* 在容器collection中删除包含的容器collection2是否成功:true
*[你是一个笨蛋, 你没骗我?]
*在容器collection中删除包含的容器collection2是否成功:false
*[你是一个笨蛋, 你没骗我?]
*说明不管删没删除成功,collection都会把包含了collection2中的元素删除掉
*/
boolean equibalance5 = collection.removeAll(collection2);
System.out.println("在容器collection中删除包含的容器collection2是否成功:" + equibalance5);
System.out.println(collection);
collection2.add("hello world");
boolean equibalance6 = collection.removeAll(collection2);
System.out.println("在容器collection中删除包含的容器collection2是否成功:" + equibalance6);
System.out.println(collection);
/*
* 集合中元素的个数
*/
int count = collection.size();
System.out.println("容器collection中元素的个数:" + count);
/*
*返回一个包含此集合中所有元素的数组
*/
Object[] objects = collection.toArray();
System.out.println("数组objects中的元素:");
for (Object object : objects) {
if(object instanceof String){
String string = (String)object;
System.out.printf("%s\t" , string);
}
}
System.out.println();
/*
* 容器中是否允许重复元素
*/
boolean equivalance7 = collection.add("你是一个笨蛋");
System.out.println("容器中是否可以加入相同的元素:" + equivalance7);
System.out.println(collection);
/*
* 清除容器collection
*/
collection.clear();
System.out.println("容器collection是否为空:" + collection.isEmpty());
}
}