当前位置: 首页 > news >正文

你做的网站可视区域多少长沙网站seo推广

你做的网站可视区域多少,长沙网站seo推广,江西微网站建设,网站开发w亿玛酷1订制补充上篇 AbstractCollection E 在正式List之前#xff0c;我们先了解我们补充上篇Collection接口的拓展实现#xff0c;也就是说当我我们需要实现一个不可修改的Collection的时候#xff0c;我们只需要拓展某个类#xff0c;也就是AbstractCollection这个类 E 在正式List之前我们先了解我们补充上篇Collection接口的拓展实现也就是说当我我们需要实现一个不可修改的Collection的时候我们只需要拓展某个类也就是AbstractCollection这个类他是Collection接口的骨干实现并以最大限度的实现了减少此接口所需要的工作; 如上两图进行比较即可。 我们可以拓展Collection,然后提供iterator和size方法的实现即可其中我们的iterator方法返回迭代器必须实现一个hasNext和next。 注意 AbstractCollectionE是一个抽象类不能直接实例化。如果需要使用它的方法需要创建一个继承自它的子类并实现CollectionE接口中的所有方法。 AbstractCollectionE提供了size()和isEmpty()方法的默认实现但是它们都是基于iterator()方法实现的。如果子类有更高效的实现方式可以重写这些方法。 AbstractCollectionE提供了contains(Object o)和remove(Object o)方法的默认实现但是它们都是基于iterator()方法实现的。如果子类有更高效的实现方式可以重写这些方法。 AbstractCollectionE没有提供add(E e)和addAll(Collection? extends E c)方法的默认实现因为这些方法的实现方式可能因子类而异。如果子类需要实现这些方法需要自行实现。 AbstractCollectionE提供了clear()和toArray()方法的默认实现但是它们都是基于iterator()方法实现的。如果子类有更高效的实现方式可以重写这些方法。 AbstractCollectionE提供了toString()方法的默认实现但是它只是简单地将集合中的元素转换为字符串并拼接在一起。如果子类需要更复杂的字符串表示方式可以重写这个方法。 补充 要实现一个可以修改的Collection我们必须重新add方法不然就会抛出异常UnsupportedOperationExceptioniterator 方法返回的迭代器还必须另外实现其 remove 方法。 List List是java中有序的、允许重复的、值可以为NULL的。用户可以根据元素的整数索引在列表中的位置访问元素并搜索列表中的元素。 List 接口在 iterator、add、remove、equals 和 hashCode 方法的协定上加了一些其他约定超过了 Collection 接口中指定的约定。 List接口中的元素按照插入顺序排列并且允许包含重复元素。 void add(int index, E element): 在指定位置插入指定元素。 boolean remove(Object element): 移除指定元素的第一个匹配项。 E remove(int index): 移除指定位置的元素。E get(int index): 返回指定位置的元素。E set(int index, E element): 替换指定位置的元素。int indexOf(Object element): 返回指定元素第一次出现的位置。 int lastIndexOf(Object element): 返回指定元素最后一次出现的位置。ListE subList(int fromIndex, int toIndex): 返回指定范围的子列表。 List接口有多个实现类常见的有ArrayList、LinkedList和Vector等。 ArrayList是基于动态数组实现的它支持快速随机访问和高效的插入、删除操作。适用于频繁访问元素的场景。 LinkedList是基于双向链表实现的它支持高效的插入、删除操作但访问元素的效率较低。适用于频繁插入、删除元素的场景。 Vector是线程安全的它与ArrayList类似但是性能较低。在多线程环境下可以使用Vector来保证线程安全。 public class ListExample {public static void main(String[] args) {ListString list new ArrayList();// 添加元素list.add(apple);list.add(banana);list.add(orange);// 获取元素String firstElement list.get(0);System.out.println(First element: firstElement);// 修改元素list.set(1, grape);// 删除元素list.remove(orange);// 遍历元素for (String element : list) {System.out.println(element);}// 判断元素是否存在boolean contains list.contains(apple);System.out.println(Does list contain apple? contains);// 获取列表的大小int size list.size();System.out.println(List size: size);// 获取子列表ListString subList list.subList(0, 2);System.out.println(Sublist: subList);} }AbstractList AbstractList是List接口的一个抽象实现类它提供了List接口中的一些通用实现使得实现List接口的子类可以更加方便地实现自己的方法。如下图所示 注意事项 AbstractList是一个抽象类不能直接实例化。如果需要使用它的方法需要创建一个继承自它的子类并实现List接口中的所有方法。 public class MyListE extends AbstractListE {private Object[] elements;private int size;public MyList(int initialCapacity) {elements new Object[initialCapacity];size 0;}Overridepublic E get(int index) {if (index 0 || index size) {throw new IndexOutOfBoundsException(Index: index , Size: size);}return (E) elements[index];}Overridepublic int size() {return size;}Overridepublic boolean add(E element) {if (size elements.length) {resize();}elements[size] element;return true;}Overridepublic E remove(int index) {if (index 0 || index size) {throw new IndexOutOfBoundsException(Index: index , Size: size);}E removedElement (E) elements[index];for (int i index; i size - 1; i) {elements[i] elements[i 1];}elements[--size] null;return removedElement;}private void resize() {int newCapacity elements.length * 2;Object[] newElements new Object[newCapacity];System.arraycopy(elements, 0, newElements, 0, size);elements newElements;} }在上述代码中 我们创建了一个名为MyList的类它继承自AbstractList类并实现了get(int index)、size()、add(E element)和remove(int index)方法。 get(int index)方法用于获取指定索引位置的元素。我们在方法中进行了边界检查并将元素强制转换为泛型类型。 size()方法返回列表的大小。 add(E element)方法用于向列表末尾添加元素。如果列表已满我们会调用resize()方法来扩容。 remove(int index)方法用于移除指定索引位置的元素。我们在方法中进行了边界检查并将被移除的元素返回。移除元素后我们需要将后面的元素向前移动并将最后一个位置置为null。 ArrayList 这个在我们面试过程中经常会碰到。 下面我们围绕ArrayList进行相关介绍 ArrayList作为Java中最常用的动态数组实现他实现了List接口由上图可以见到其继承的AbstractList类实现的List接口他可以动态地增加或者删除元素。注意一下他底层是数组并且是可以扩充的数组。既然他是数组实现的我们都知道如果是数组元素那么随机访问速度会很快但有优点就有缺点查询速度快了那么删除或者插入就慢我们在ArrayList中插入或者删除元素的时候需要移动后面的元素从而导致他的速度慢。ArrayList是非线程安全的如果需要在多线程环境下使用需要进行同步处理。ArrayList的默认初始容量为10如果需要存储更多的元素可以在创建ArrayList对象时指定初始容量。 ArrayList 的扩容机制 既然说到了ArrayList的扩容那么我们来了解一下ArrayList的扩容机制吧 初始容量当创建一个新的ArrayList对象时它会分配一个初始容量。默认情况下初始容量为10但也可以通过构造函数指定其他初始容量。 容量增长当ArrayList的元素数量超过当前容量时ArrayList会自动增加其容量。容量增长的策略是通过创建一个更大的数组并将原始数组中的元素复制到新数组中来实现的。 增长因子ArrayList的容量增长是按照增长因子来计算的。增长因子是一个大于1的值用于确定新容量相对于当前容量的增长量。默认情况下增长因子为1.5这意味着新容量将是当前容量的1.5倍比如说10经过一次扩容为 10 * 1.5 15。 扩容操作当需要扩容时ArrayList会创建一个新的数组并将原始数组中的元素复制到新数组中。这个操作涉及到数组的复制因此在扩容时会有一定的性能开销。 扩容策略ArrayList的扩容策略是相对保守的它会尽量避免频繁的扩容操作。当需要扩容时ArrayList会根据当前容量和增长因子计算出一个新的容量然后将新容量设置为ArrayList的容量。这样做的目的是为了减少扩容操作的频率提高性能。 代码示例 import java.util.ArrayList;public class ArrayListExample {public static void main(String[] args) {// 创建一个ArrayList对象ArrayListString list new ArrayList();// 向ArrayList中添加一个元素list.add(apple);list.add(banana);// 在指定位置插入一个元素list.add(1, orange);// 删除指定位置的元素list.remove(1);// 删除指定元素list.remove(apple);// 获取指定位置的元素String fruit list.get(0);// 替换指定位置的元素list.set(0, orange);// 获取ArrayList中元素的数量int size list.size();// 清空ArrayList中的所有元素list.clear();// 判断ArrayList中是否包含指定元素boolean containsApple list.contains(apple);// 获取指定元素在ArrayList中的位置int index list.indexOf(banana);} }
http://www.pierceye.com/news/877545/

相关文章:

  • 网站备案表服务类网站模板
  • 个人网站维护费用淮安注册公司
  • 网站提交做海鱼的网站
  • 建设网站业务竞争大唯一做魅惑的网站
  • 建设学校网站的意义更换wordpress图标
  • 环保局网站如何做备案证明在线代理服务器网页版
  • 十佳网站武昌做网站哪家好
  • wordpress调用同分类最新文章seo营销网站的设计标准
  • 免费下载网站有哪些连云港网络公司排名
  • 如何迅速建企业网站毕设做网站需要什么技术准备
  • 可以做音基题的音乐网站公司网页设计怎么弄
  • 益阳营销型网站建设乌鲁木做兼职的网站
  • 如何建单位网站怎么让别人找你做网站
  • 青海建设厅职称网站建设小程序怎么挂失
  • 建设在线购物网站51zwd一起做网站广州
  • 如何制作网站图片帮忙做网站
  • 高端做网站公司网络信息安全公司
  • 手机网站图片自适应建设网站用的软件
  • wordpress postid随机苏州百度推广排名优化
  • 重庆企业网站推广服务做性的网站
  • asp.net 创建网站登陆建设银行网站异常
  • 柳州网站建设柳州wordpress 创建文集
  • 怎样把网站做成app多语言网站建设方案
  • 中国最新新闻头条南通百度网站快速优化
  • 乐清网站推广制作长沙银狐做网站
  • 做企业网站需要多久论坛网站推广方案
  • 郑州网站优化排名wordpress搭建本地博客
  • 如何获取网站域名证书刚刚北京传来重大消息
  • 找别人做淘客网站他能改pid吗现在中型公司做网站用的是什么框架
  • 泉州晋江网站建设费用海南建设银行官网招聘网站