集合框架
Collection
List和Set
add()
contains
size,clear,isEmpty
addAll与containsAll
-------------------------------淫荡分割线---------------------------------
java提供了一种可以存数一组数据的数据结构,其提供了丰富的方法,在实际开发中往往比数组使用的广泛。
这种数据结构成为集合:Collection。
Collection是一个接口,其定义了集合的相关功能方法。
1. List和Set
Collection派生出了两个子接口,一个是List另一个则是Set。
List:称为可重复集,顾名思义,该集合中是允许存放重复元素的,那么何为重复元素?
重复元素指的并非是同一个元素,而是指equals方法比较为true的元素。
Set:称为不可重复集,所以,该集合中是不能将相同的元素存入集合两次,同List,
这里相同指的也是两个元素的equals比较结果为true。 不会出现true的情况
2. 集合持有对象的引用
集合当中 放的都是引用 是地址
集合中存储的都是引用类型的元素,那么引用类型变量实际上存储的是对象的“地址”,所以实际上集合只存储了元素对象在堆中的地址。
而并不是将对象本身存入了集合中。
E 类型object
3.add()方法
Collection定义了一个add方法用于向集合中添加新元素。 该方法定义为:
boolean add(E e)
该方法会将给定的元素添加进集合,若添加成功则返回true,否则返回false(Set集合里面不能放重复元素)
public class TCollection { public static void main(String[] args) { /* * boolean add(E e) * 向集合中添加元素 添加成功返回true */ Collection collection =new ArrayList(); collection.add("a"); collection.add('b'); collection.add("c"); System.out.println(collection); } }
4. contains方法
boolean contains(Object o)
该方法会用于判断给定的元素是否被包含在集合中。若包含则返回true,否则返回false。
这里需要注意的是,集合在判断元素是否被包含在集合中是使用元素的equals的比较结果。
(o==null ? e==null : o.equals(e)) 其中e是集合中的元素。
class TCollection2{ public static void main(String[] args) { /* * boolean contain() * 判断集合中是否包含给定元素 包含则返回true * * 存入集合的元素 应妥善重写equals方法 比如Cell里面要重写equals * 应为集合中很多方法都参考equals的比较结果 */ Collection c1 =new ArrayList(); c1.add(new Cell(1,2)); c1.add(new Cell(1,3)); c1.add(new Cell(1,4)); c1.add(new Cell(1,5)); System.out.println(c1); Cell cell =new Cell(1,2); boolean contains =c1.contains(cell); System.out.println("是否包含cell:"+contains); } }
5. size,clear,isEmpty方法
size方法用于获取当前集合中的元素总数。该方法定义为:int size()
clear方法用于清空集合。该方法定义为:void clear()
isEmpty方法用于判断当前集合中是否不 包含元素。该方法定义为:boolean isEmpty()
例如:
/** * 测试集合的size 、clear、 isEmpty方法 * */ class TCollection3{ /** * 测试集合的size 、clear、 isEmpty方法 * */ public static void main(String[] args) { Collection c2 = new ArrayList(); boolean isEmpty =c2.isEmpty(); System.out.println("是否是个空集合:"+isEmpty); System.out.println("size:"+c2.size()); c2.add("java"); c2.add("php"); c2.add("cpp"); System.out.println("size:"+c2.size()); } }
6. addAll与containsAll方法
集合也提供了批处理操作:
addAll方法用于将给定集合中的所有元素添加到当前集合中,其方法定义为:
/* * 将c2元素全部放入c3中 */ Collection c3 =new ArrayList(); c3.addAll(c2); System.out.println(c3); //查看集合c4中是否包含c2中的所有元素 Collection c4= new ArrayList(); c4.add("cpp"); c4.add("php"); c4.containsAll(c2); System.out.println(c4.containsAll(c2)); /* * boolean remove(Object o) * 删除集合中第一个与给定的元素相同的元素 * 这里相同也是依靠元素的equals方法比较的 */ System.out.println(c2); c2.remove(c4); System.out.println(c2); } }