java容器中涉及的小众知识
已有数组,为什么还要造一个集合
数组的优点:
- 数组的效率高于集合类
- 数组能存放基本数据类型和对象;集合中只能放对象
数组的缺点:
- 不是面向对象的,存在明显的缺陷
- 数组长度固定且无法动态改变;集合类容量动态改变
- 数组无法判断其中实际存了多少元素,只能通过length属性获取数组的申明的长度
- 数组存储的特点是顺序的连续内存;集合的数据结构更丰富
JDK 提供集合的意义:
- 集合以类的形式存在,符合面向对象,通过简单的方法和属性调用可实现各种复杂操作
- 集合有多种数据结构,不同类型的集合可适用于不同场合
- 弥补了数组的一些缺点,比数组更灵活、实用
集合框架包含的内容
代码部分
public static void main(String[] args) {
ArrayList list= new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
System.out.println("-----------------------");
//迭代器
// Iterator iterator = list.iterator();
ListIterator iterator = list.listIterator();//如果想要在迭代的过程中进行向集合中添加,修改元素等就需要使用ListIterator接口中的方法
while(iterator.hasNext()){
Object o = iterator.next();
if(o.equals(2)){
// list.add(66);//异常
//替换添加方法
iterator.add(66);//添加元素
//iterator.set(66);//修改当前元素
//list.remove(o);//使用list.remove() 会抛出 ConcurrentModificationException 并发修改异常
//替换方法
// iterator.remove();//移除【删除】当前元素
}
System.out.println(o);
}
System.out.println("-----------------------");
//增强for循环写法,打印查看移除元素后的list中的元素 1 3 4
for (Object i:list) {
System.out.println(i);
}
System.out.println("-----------------------");
while (iterator.hasPrevious()){//向前遍历
System.out.println(iterator.previous());
}
}