Collection集合
数组vs集合:
- 数组长度是固定的,集合的长度是可变的。
- 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。
List接口:(Vector集合,ArrayList集合,LinkedList集合的共性抽取)
- 有序的集合(存储和取出元素顺序相同)
- 允许存储重复的元素
- 有索引,可以使用普通的for循环遍历
List集合:有索引,可以存储重复元素,可以保证存取顺序
ArrayList:底层是数组实现的,查询快,增删慢
LinkList:底层是链表实现的,查询慢,增删快
Set接口:(TreeSet集合,HashSet集合,LinkedHashSet集合(HashSet集合的子集)的共性抽取)
- 无序的集合(存储和取出元素顺序可能不相同)
- 不允许存储重复元素
- 没有索引(不能使用普通的for循环遍历)
Set集合:无索引,不可以存储重复元素,存取无序
Collection接口:(List接口,Set接口的共性抽取)
- 没有带索引的方法
集合框架的学习方式:
- 学习顶层:学习顶层接口/抽象类中共性的方法,所有的子类都可以使用。
- 使用底层:由于顶层不是接口就是抽象类,无法创建对象使用,所以需要使用底层的子类创建对象使用。
Collection集合常用方法:
方法 作用 boolean add(E e); 向集合中添加元素 boolean remove(E e); 删除集合中的某个元素 void clear(); 清空集合所有元素 boolean contain(E e); 判断集合中是否包含某个元素 boolean isEmpty(); 判断集合是否为空 int size(); 获取集合的长度 Object[] toArray(); 将集合转成一个数组
public class Demo {
public static void main(String[] args) {
//Collection是接口,无法直接创建对象,所以需要实现类
Collection<String> coll = new ArrayList<>();
//boolean add(E e) 向集合中添加元素
coll.add("hello");
coll.add("world");
System.out.println(coll);
//Object[] toArray() 将集合转成一个数组
Object[] arr = coll.toArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//boolean remove(E e) 删除集合中某个元素
boolean rerult=coll.remove("hello");//删除成功,会返回true
System.out.println(coll);
System.out.println(rerult);
//boolean contains(E e) 判断集合中是否包含某个元素
boolean flag=coll.contains("world");
System.out.println(flag);
//boolean isEmpty() 判断集合是否为空
System.out.println(coll.isEmpty());
//int size() 获得数组长度
System.out.println(coll.size());
//void clear() 清空集合所有元素
coll.clear();
System.out.println(coll);
}
}
注意:这些方法都是定义在collection最顶层的接口中,它的实现类都可以使用这些方法。