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

长沙模板建站源码自己做网站怎么上传

长沙模板建站源码,自己做网站怎么上传,重庆有名的网站建设,渭南哪家公司可以做网站一、Java集合框架概述 集合可以看作是一种容器#xff0c;用来存储对象信息。所有集合类都位于java.util包下#xff0c;但支持多线程的集合类位于java.util.concurrent包下。 数组与集合的区别如下#xff1a; 1#xff09;数组长度不可变化而且无法保存具有映射关系的…一、Java集合框架概述 集合可以看作是一种容器用来存储对象信息。所有集合类都位于java.util包下但支持多线程的集合类位于java.util.concurrent包下。 数组与集合的区别如下 1数组长度不可变化而且无法保存具有映射关系的数据集合类用于保存数量不确定的数据以及保存具有映射关系的数据。 2数组元素既可以是基本类型的值也可以是对象集合只能保存对象。 Java集合类主要由两个根接口Collection和Map派生出来的Collection派生出了三个子接口List、Set、QueueJava5新增的队列因此Java集合大致也可分成List、Set、Queue、Map四种接口体系注意Map不是Collection的子接口。 Java集合框架图如下 其中List代表了有序可重复集合可直接根据元素的索引来访问Set代表无序不可重复集合只能根据元素本身来访问Queue是队列集合Map代表的是存储key-value对的集合可根据元素的key来访问value。 上图中淡绿色背景覆盖的是集合体系中常用的实现类分别是ArrayList、LinkedList、ArrayQueue、HashSet、TreeSet、HashMap、TreeMap等实现类。 二、Java集合常见接口及实现类 1. Collection接口常见方法来源于Java API 2. Set集合 Set集合与Collection的方法相同由于Set集合不允许存储相同的元素所以如果把两个相同元素添加到同一个Set集合则添加操作失败新元素不会被加入add()方法返回false。为了帮助理解请看下面代码示例 public static void main(String[] args) {SetString setnew HashSet();set.add(hello world);set.add(hello 冰湖一角);set.add(hello 冰湖一角);System.out.println(集合中元素个数set.size());System.out.println(集合中元素为set.toString());} }/pre 运行结果如下 集合中元素个数2 集合中元素为[hello world, hello 冰湖一角] 分析由于String类中重写了hashCode()和equals()方法用来比较指向的字符串对象所存储的字符串是否相等。所以这里的第二个hello 冰湖一角是加不进去的。 下面着重介绍Set集合几个常用实现类 1HashSet类 HashSet是Set集合最常用实现类是其经典实现。HashSet是按照hash算法来存储元素的因此具有很好的存取和查找性能。 HashSet具有如下特点 ♦ 不能保证元素的顺序。 ♦ HashSet不是线程同步的如果多线程操作HashSet集合则应通过代码来保证其同步。 ♦ 集合元素值可以是null。 HashSet存储原理如下 当向HashSet集合存储一个元素时HashSet会调用该对象的hashCode()方法得到其hashCode值然后根据hashCode值决定该对象的存储位置。HashSet集合判断两个元素相等的标准是(1)两个对象通过equals()方法比较返回true(2)两个对象的hashCode()方法返回值相等。因此如果(1)和(2)有一个不满足条件则认为这两个对象不相等可以添加成功。如果两个对象的hashCode()方法返回值相等但是两个对象通过equals()方法比较返回falseHashSet会以链式结构将两个对象保存在同一位置这将导致性能下降因此在编码时应避免出现这种情况。 HashSet查找原理如下 基于HashSet以上的存储原理在查找元素时HashSet先计算元素的HashCode值也就是调用对象的hashCode方法的返回值然后直接到hashCode值对应的位置去取出元素即可这就是HashSet速度很快的原因。 重写hashCode()方法的基本原则如下 ♦ 在程序运行过程中同一个对象的hashCode()方法返回值应相同。 ♦ 当两个对象通过equals()方法比较返回true时这两个对象的hashCode()方法返回值应该相等。 ♦ 对象中用作equals()方法比较标准的实例变量都应该用于计算hashCode值。 2LinkedHashSet类 LinkedHashSet是HashSet的一个子类具有HashSet的特性也是根据元素的hashCode值来决定元素的存储位置。但它使用链表维护元素的次序元素的顺序与添加顺序一致。由于LinkedHashSet需要维护元素的插入顺序因此性能略低于HashSet但在迭代访问Set里的全部元素时由很好的性能。 3TreeSet类 TreeSet时SortedSet接口的实现类TreeSet可以保证元素处于排序状态它采用红黑树的数据结构来存储集合元素。TreeSet支持两种排序方法自然排序和定制排序默认采用自然排序。 ♦ 自然排序 TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素的大小关系然后将元素按照升序排列这就是自然排序。如果试图将一个对象添加到TreeSet集合中则该对象必须实现Comparable接口否则会抛出异常。当一个对象调用方法与另一个对象比较时例如obj1.compareTo(obj2)如果该方法返回0则两个对象相等如果返回一个正数则obj1大于obj2如果返回一个负数则obj1小于obj2。 Java常用类中已经实现了Comparable接口的类有以下几个 ♦ BigDecimal、BigDecimal以及所有数值型对应的包装类按照它们对应的数值大小进行比较。 ♦ Charchter按照字符的unicode值进行比较。 ♦ Booleantrue对应的包装类实例大于false对应的包装类实例。 ♦ String按照字符串中的字符的unicode值进行比较。 ♦ Date、Time后面的时间、日期比前面的时间、日期大。 对于TreeSet集合而言它判断两个对象是否相等的标准是两个对象通过compareTo(Object obj)方法比较是否返回0如果返回0则相等。 ♦ 定制排序 想要实现定制排序需要在创建TreeSet集合对象时提供一个Comparator对象与该TreeSet集合关联由Comparator对象负责集合元素的排序逻辑。 综上自然排序实现的是Comparable接口定制排序实现的是Comparator接口。具体代码实现会在后续章节中讲解 4EnumSet类 EnumSet是一个专为枚举类设计的集合类不允许添加null值。EnumSet的集合元素也是有序的它以枚举值在Enum类内的定义顺序来决定集合元素的顺序。 5各Set实现类的性能分析 HashSet的性能比TreeSet的性能好特别是添加查询元素时因为TreeSet需要额外的红黑树算法维护元素的次序如果需要一个保持排序的Set时才用TreeSet否则应该使用HashSet。 LinkedHashSet是HashSet的子类由于需要链表维护元素的顺序所以插入和删除操作比HashSet要慢但遍历比HashSet快。 EnumSet是所有Set实现类中性能最好的但它只能 保存同一个枚举类的枚举值作为集合元素。 以上几个Set实现类都是线程不安全的如果多线程访问必须手动保证集合的同步性这在后面的章节中会讲到。 3. List集合 List集合代表一个有序、可重复集合集合中每个元素都有其对应的顺序索引。List集合默认按照元素的添加顺序设置元素的索引可以通过索引类似数组的下标来访问指定位置的集合元素。 实现List接口的集合主要有ArrayList、LinkedList、Vector、Stack。 1ArrayList ArrayList是一个动态数组也是我们最常用的集合是List类的典型实现。它允许任何符合规则的元素插入甚至包括null。每一个ArrayList都有一个初始容量10该容量代表了数组的大小。随着容器中的元素不断增加容器的大小也会随着增加。在每次向容器中增加元素的同时都会进行容量检查当快溢出时就会进行扩容操作。所以如果我们明确所插入元素的多少最好指定一个初始容量值避免过多的进行扩容操作而浪费时间、效率。 ArrayList擅长于随机访问元同时ArrayList是非同步的。 2LinkedList LinkedList是List接口的另一个实现除了可以根据索引访问集合元素外LinkedList还实现了Deque接口可以当作双端队列来使用也就是说既可以当作“栈”使用又可以当作队列使用。 LinkedList的实现机制与ArrayList的实现机制完全不同ArrayLiat内部以数组的形式保存集合的元素所以随机访问集合元素有较好的性能LinkedList内部以链表的形式保存集合中的元素所以随机访问集合中的元素性能较差但在插入删除元素时有较好的性能。 3Vector 与ArrayList相似但是Vector是同步的。所以说Vector是线程安全的动态数组。它的操作与ArrayList几乎一样。 4Stack Stack继承自Vector实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop 方法还有peek方法得到栈顶的元素empty方法测试堆栈是否为空search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。 5Iterator接口和ListIterator接口 Iterator是一个接口它是集合的迭代器。集合可以通过Iterator去遍历集合中的元素。Iterator提供的API接口如下 ♦ boolean hasNext()判断集合里是否存在下一个元素。如果有hasNext()方法返回 true。 ♦ Object next()返回集合里下一个元素。 ♦ void remove()删除集合里上一次next方法返回的元素。 ListIterator接口继承Iterator接口提供了专门操作List的方法。ListIterator接口在Iterator接口的基础上增加了以下几个方法 ♦ boolean hasPrevious()判断集合里是否存在上一个元素。如果有该方法返回 true。 ♦ Object previous()返回集合里上一个元素。 ♦ void add(Object o)在指定位置插入一个元素。 以上两个接口相比较不难发现ListIterator增加了向前迭代的功能Iterator只能向后迭代ListIterator还可以通过add()方法向List集合中添加元素Iterator只能删除元素。 4. Map集合 Map接口采用键值对MapK,V的存储方式保存具有映射关系的数据因此Map集合里保存两组值一组值用于保存Map里的key另外一组值用于保存Map里的valuekey和value可以是任意引用类型的数据。key值不允许重复可以为null。如果添加key-value对时Map中已经有重复的key则新添加的value会覆盖该key原来对应的value。常用实现类有HashMap、LinkedHashMap、TreeMap等。 Map常见方法来源于API如下 1HashMap与Hashtable HashMap与Hashtable是Map接口的两个典型实现它们之间的关系完全类似于ArrayList与Vertor。HashTable是一个古老的Map实现类它提供的方法比较繁琐目前基本不用了HashMap与Hashtable主要存在以下两个典型区别 ♦ HashMap是线程不安全HashTable是线程安全的。 ♦ HashMap可以使用null值最为key或valueHashtable不允许使用null值作为key和value如果把null放进HashTable中将会发生空指针异常。 为了成功的在HashMap和Hashtable中存储和获取对象用作key的对象必须实现hashCode()方法和equals()方法。 HashMap工作原理如下 HashMap基于hashing原理通过put()和get()方法存储和获取对象。当我们将键值对传递给put()方法时它调用建对象的hashCode()方法来计算hashCode值然后找到bucket位置来储存值对象。当获取对象时通过建对象的equals()方法找到正确的键值对然后返回对象。HashMap使用链表来解决碰撞问题当发生碰撞了对象将会存储在链表的下一个节点中。 2LinkedHashMap实现类 LinkedHashMap使用双向链表来维护key-value对的次序其实只需要考虑key的次序即可该链表负责维护Map的迭代顺序与插入顺序一致因此性能比HashMap低但在迭代访问Map里的全部元素时有较好的性能。 3Properties Properties类时Hashtable类的子类它相当于一个key、value都是String类型的Map主要用于读取配置文件。 4TreeMap实现类 TreeMap是SortedMap的实现类是一个红黑树的数据结构每个key-value对作为红黑树的一个节点。TreeMap存储key-value对时需要根据key对节点进行排序。TreeMap也有两种排序方式 ♦ 自然排序TreeMap的所有key必须实现Comparable接口而且所有的key应该是同一个类的对象否则会抛出ClassCastException。 ♦ 定制排序创建TreeMap时传入一个Comparator对象该对象负责对TreeMap中的所有key进行排序。 5各Map实现类的性能分析 ♦ HashMap通常比Hashtable古老的线程安全的集合要快 ♦ TreeMap通常比HashMap、Hashtable要慢因为TreeMap底层采用红黑树来管理key-value。 ♦ LinkedHashMap比HashMap慢一点因为它需要维护链表来爆出key-value的插入顺序。 阅读目录置顶)(长期更新计算机领域知识https://blog.csdn.net/weixin_43392489/article/details/102380691 阅读目录置顶)(长期更新计算机领域知识https://blog.csdn.net/weixin_43392489/article/details/102380882
http://www.zqtcl.cn/news/274059/

相关文章:

  • 数据型网站建设wordpress 阅读统计
  • a做爰网站集宁建设局网站
  • 黄山建设网站公司电话wordpress微信分享图
  • 大数据网站网站的备案流程图
  • 如果自己做网站wordpress付款插件
  • 网站建设项目的结论网站开发合同适用印花税
  • 网站建设经验与教训普陀网站建设推广
  • 12306网站是是阿里巴巴做的吗专业建网站设计公司
  • 关于申请网站建设经费的请示网推推荐信
  • 网站建设请款报告网站服务器租用价格
  • 贵州建设网老网站手机网站建设运营方案
  • 网站方案范文唐山自助建站模板
  • 金华网站制作网站建设的功能需求
  • 用iis建立网站口碑营销案例分析
  • 注册网站要求线上设计师与线下设计师的区别
  • 个人备案 网站内容网站备案如何查询
  • 宿州科技网站建设百度网站外链发布平台
  • 织梦移动网站wordpress父文章显示不全
  • 游戏攻略网站怎么做网站开发需求确认书
  • 做高大上分析的网站电商到底干嘛的
  • 物流网站哪个好网络推广就找南昌莫非传媒
  • 查看网站空间企业网站管理系统介绍
  • 重庆市工程建设信息网新网站艺术品商城网站开发
  • 上海网站制作商wordpress改主题
  • 钰鸣厦门网站建设2023热点新闻事件
  • 网络营销的主要形式有建设网站免费搭建网站哪个好
  • 建一个网站需要哪些人aso是什么意思
  • 电商网站有哪些淘宝运营培训班哪里有
  • 网站开发网站制作太原优化排名推广
  • 佛山市网站开发桥西区建设局网站