集合
集合图解
集合也是一个容器,用来存数据
数组的缺点
- 只要创建出来就固定其长度了, 所有扩展性差,。所以才有集合去代替
数组与集合的关系
相同点:
- 数组与集合都是用来存数据, 都可以通过索引来获取数据
- 数组与集合都是采用数组的方法来进行存的
不同点
- 数组可以存基本数据类型,也可以存引用数据类型
- 集合只能够存引用数据类型
Collection
- Collection 层次结构 中的根接口索引也是从0开始
- boolean add(E e) 添加,返回值是bealoon添加成功返回true
- boolean contains(Object o) 判断是否有此元素,如果存在返回true,否则false
- boolean isEmpty() 判断集合里是否有元素
- boolean remove(Object o) 根据集合里的元素进行删除
- int size() 获取到集合的长度
- Object[] toArray() 把集合转换成数组
- void clear() 清空数组里的所有的元素
- iterator() 把集合转换成迭代器的方法
所有带ALL的方法
- addAll(Collection<? extends E> c) 把小集合添加到大集合里, 例如: co.addAll©; 把集合c的所有数据添加到co。
- boolean containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。
- removeAll(Collection<?> c) 返回值:如果存在交集返回 是true , 返回的是没有较交集的数据
- retainAll(Collection<?> c) 返回值 判断是否发生该变,如果发生该变返回true,不发生该变返回false 取出来的是交集的结果
感觉Arraylist 最重要所以列出三种遍历方法
/*
* 遍历ArrayList的方法一:使用普通for循环
*/
public static void function(){
ArrayList<String> name= new ArrayList<>();
name.add("zhangsan");
name.add("lisi");
name.add("wangwu");
name.add("zhaoliu");
//使用size()方法获取到集合的长度
for (int i = 0; i < name.size(); i++) {
System.out.println(name.get(i));
}
}
/*
* 遍历ArrayList的方法二:使用增强for循环
*/
public static void foreach(){
ArrayList<String> name= new ArrayList<>();
name.add("zhangsan");
name.add("lisi");
name.add("wangwu");
name.add("zhaoliu");
for (String string : name) {
System.out.println(string);
}
}
/*
* 遍历ArrayList的方法三:使用迭代器iterator
*/
ListIterator iter = list.listIterator();
while (iter.hasNext()){
Aactor aactor = (Aactor) iter.next();
System.out.println(aactor.toString());
}
- ListIterator 这个迭代器是针对 list 集合而存在, 它的父类也是Iterator
- ArrayList: 1.有顺序 2. 有索引 3.可以重复 4.线程不安全
- LinkedList: 1.是以链表式来进行存 特点: 增加 删除 修改 速度快,效率高 查询速度慢
vector
- 线程是安全的,构造方法跟Arraylist一样
独有的方法
- public void addElement(E obj) 向末尾来添加数据
- public E elementAt(int index) 根据索引来获取
- public boolean removeElement(Object obj) 删除集合里的对象
- Element 都是根据节点来进行操作
疑问
用了集合就可以放弃数组了吗