专题网站开发工具有哪些,2345搜索,html代码中,asp作业做购物网站代码一、集合
集合是数据容器。相较于数组集合具有以下几个特点#xff1a;
数组一旦创建#xff0c;长度不可改变。集合的长度会自动扩容。集合具有很多数组没有的功能函数API数组元素的存储特点单一#xff0c;不同的集合有不同的存储特点。 1. Collection顶层接口
Collect…一、集合
集合是数据容器。相较于数组集合具有以下几个特点
数组一旦创建长度不可改变。集合的长度会自动扩容。集合具有很多数组没有的功能函数API数组元素的存储特点单一不同的集合有不同的存储特点。 1. Collection顶层接口
Collection表示一组对象这些对象也称为collection的元素。有的是有序的List 有的是无序的Set。
Collection c new ArrayList();//多态的方式创建一个Collection类1.1增删改查和其他操作
函数作用add()添加元素remove()删除元素contains()判断是否包含toArray()转换成数组clear()清空集合size()获取集合元素个数retainAll()求两个集合的交集removeAll()求两个集合的差集
1.2迭代器遍历
函数作用iterator()获取当前集合的迭代器对象hasNext()判断是否有下一个元素next()取出下一个元素remove()移除当前元素
Testpublic void test1(){Collection c new ArrayList();//添加元素c.add(tom);c.add(jack);c.add(rose);c.add(jerry);//获取迭代器Iterator iterator c.iterator();while(iterator.hasNext()){Object obj iterator.next();System.out.println(obj);}}1.3 foreach循环
foreach增强for循环是jdk5的新特性通常用于遍历数组和Collection集合。相较于for循环无法在遍历过程中得到元素的下标进而无法直接修改元素只能读取元素但语法形式更为简单。 底层是使用迭代器来实现的只有实现了Iterable接口的类才能使用foreach()来进行遍历。Collection类继承了Iterable接口所以所有集合类都能够使用foreach和Iterator迭代器来实现所有元素的遍历。
注实现了Iterator接口的类都可以使用foreach循环遍历。
for(元素类型 变量 数组或Collection集合对象){//循环体
}//遍历数组
int[] arr {11, 22, 33};
for(int i : arr){System.out.println(i);
}//遍历集合与上述代码类似只是将数组名称改为集合名称1.4 迭代器的快速失败机制
在使用迭代器遍历集合时, 有外部代码在同时修改元素集合迭代器会迅速抛出ConcurrentModificationException。
例如通常不允许一个线程在另一个线程迭代Collection时修改它。通常在这些情况下迭代的结果是不确定的。如果检测到这种行为一些Iterator实现(包括JRE提供的所有通用集合实现)可能会选择抛出此异常。这样做的迭代器被称为快速失败迭代器因为它们快速而干净地失败而不是在未来不确定的时间冒任意的、不确定的行为的风险。
机制当创建迭代器时会使用变量modCount记录当前集合的修改次数。每次取出元素前都会检查判断该变量是否修改过如果修改过立即抛出异常。该机制并不能完全保证不会有外部代码修改元素。
Testpublic void test1(){Collection c new ArrayList();//添加元素c.add(tom);c.add(jack);c.add(rose);//倒数第二个不会抛出异常c.add(jerry);//获取迭代器Iterator iterator c.iterator();while(iterator.hasNext()){//遍历Object obj iterator.next();if(jack.equals(obj)){//c.remove(obj);//集合的remove方法//迭代器自身的remove方法iterator.remove();}//System.out.println(obj);}System.out.println(c);}2. List子接口
Collection有两个子接口分别是List和Set。List集合的特点主要是以下几点
元素是有序的元素可以重复Set集合不允许重复可以通过索引访问元素
2.1 特有方法
List继承了父类Collection的方法此外特有的方法都是通过下标找到指定位置来访问数据而增加的方法。 //截取一个子集合List subList list.subList(0,2);System.out.println(subList subList);//获取元素首次出现的位置int java list.indexOf(java);System.out.println(java);//删除指定索引位置的元素Object remove list.remove(1);//返回被删除的元素System.out.println(remove remove);//替换指定位置的元素返回被替换的元素Object java1 list.set(1, JAVA);System.out.println(java1 java1);2.2 List集合的遍历
迭代器遍历:可以使用迭代器的remove方法进行删除。增强for循环无法修改集合里面的元素普通for循环可删除可修改。ListIterator迭代器普通for循环
2.3 ListIterator迭代器
Iterator接口的子接口增加了(添加元素、修改元素、判断是否有上一个元素、取出上一个元素) 这几个方法。并且它的构造器可以定义遍历的开始位置。
//从第二个位置开始遍历
ListIterator iterator new ListIterator(2);查看是否有上一个元素该方法是ListIterator特有的方法使用该方法可以倒着遍历整个List集合。
iterator.hasPrevious();3. ArrayList类
使用空参构造器创建对象底层数组容量为0。第一次添加元素时初始化容量为10。当放入数据大于初始容量时数组扩容为原容量的1.5倍。增删时如果容量不足需要动态扩容效率不高查询时直接通过数组索引查询效率高。
特点
元素有序可重复可以通过索引访问底层结构 数组增删慢索引查找速度快
4. Vector类
底层也是数组实现的线程安全的。ArrayList是线程不安全的。数组容量不足时容量扩充到原先的2倍。效率低不推荐使用。