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

用花生壳免费域名做公司网站越秀区网站建设公司

用花生壳免费域名做公司网站,越秀区网站建设公司,公司网站域名无法解析,苏州市住房建设局网站转#xff1a;https://blog.csdn.net/kingcat666/article/details/75579632 1. Java集合类基本概念 在编程中#xff0c;常常需要集中存放多个数据。从传统意义上讲#xff0c;数组是我们的一个很好的选择#xff0c;前提是我们事先已经明确知道我们将要保存的对象的数量…转https://blog.csdn.net/kingcat666/article/details/75579632 1. Java集合类基本概念 在编程中常常需要集中存放多个数据。从传统意义上讲数组是我们的一个很好的选择前提是我们事先已经明确知道我们将要保存的对象的数量。一旦在数组初始化时指定了这个数组长度这个数组长度就是不可变的如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量)java的集合类就是一个很好的设计方案了。 集合类主要负责保存、盛装其他数据因此集合类也被称为容器类。所以的集合类都位于java.util包下后来为了处理多线程环境下的并发安全问题java5还在java.util.concurrent包下提供了一些多线程支持的集合类。 Java容器类类库的用途是保存对象并将其划分为两个不同的概念 1) Collection 一组对立的元素通常这些元素都服从某种规则    1.1) List必须保持元素特定的顺序    1.2) Set不能有重复元素    1.3) Queue保持一个队列(先进先出)的顺序2) Map 一组成对的键值对对象 Collection和Map的区别在于容器中每个位置保存的元素个数: 1) Collection 每个位置只能保存一个元素(对象) 2) Map保存的是键值对就像一个小型数据库。我们可以通过键找到该键对应的值 2. Java集合类架构层次关系 1. Interface Iterable 迭代器接口这是Collection类的父接口。实现这个Iterable接口的对象允许使用foreach进行遍历也就是说所有的Collection集合对象都具有foreach可遍历性。这个Iterable接口只 有一个方法: iterator()。它返回一个代表当前集合对象的泛型T迭代器用于之后的遍历操作 1.1 Collection Collection是最基本的集合接口一个Collection代表一组Object的集合这些Object被称作Collection的元素。Collection是一个接口用以提供规范定义不能被实例化使用 1) Set Set集合类似于一个罐子丢进Set集合里的多个对象之间没有明显的顺序。Set继承自Collection接口不能包含有重复元素(记住这是整个Set类层次的共有属性)。     Set判断两个对象相同不是使用运算符而是根据equals方法。也就是说我们在加入一个新元素的时候如果这个新元素对象和Set中已有对象进行注意equals比较都返回false则Set就会接受这个新元素对象否则拒绝。     因为Set的这个制约在使用Set集合的时候应该注意两点 1) 为Set集合里的元素的实现类实现一个有效的equals(Object)方法、 2) 对Set的构造函数传入的Collection参数不能包含重复的元素 1.1) HashSet HashSet是Set接口的典型实现HashSet使用HASH算法来存储集合中的元素因此具有良好的存取和查找性能。当向HashSet集合中存入一个元素时HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值然后根据该HashCode值决定该对象在HashSet中的存储位置。         值得注意的是HashSet集合判断两个元素相等的标准是两个对象通过equals()方法比较相等并且两个对象的hashCode()方法的返回值相等 1.1.1) LinkedHashSet LinkedHashSet集合也是根据元素的hashCode值来决定元素的存储位置但和HashSet不同的是它同时使用链表维护元素的次序这样使得元素看起来是以插入的顺序保存的。     当遍历LinkedHashSet集合里的元素时LinkedHashSet将会按元素的添加顺序来访问集合里的元素。LinkedHashSet需要维护元素的插入顺序因此性能略低于HashSet的性能但在迭代访问Set里的全部元素时(遍历)将有很好的性能(链表很适合进行遍历) 1.2) SortedSet     此接口主要用于排序操作即实现此接口的子类都属于排序的子类 1.2.1) TreeSet TreeSet是SortedSet接口的实现类TreeSet可以确保集合元素处于排序状态 1.3) EnumSet EnumSet是一个专门为枚举类设计的集合类EnumSet中所有元素都必须是指定枚举类型的枚举值该枚举类型在创建EnumSet时显式、或隐式地指定。EnumSet的集合元素也是有序的    它们以枚举值在Enum类内的定义顺序来决定集合元素的顺序 2) List List集合代表一个元素有序、可重复的集合集合中每个元素都有其对应的顺序索引。List集合允许加入重复元素因为它可以通过索引来访问指定位置的集合元素。List集合默认按元素的添加顺序设置元素的索引 2.1) ArrayList ArrayList是基于数组实现的List类它封装了一个动态的增长的、允许再分配的Object[]数组。 2.2) Vector Vector和ArrayList在用法上几乎完全相同但由于Vector是一个古老的集合所以Vector提供了一些方法名很长的方法但随着JDK1.2以后java提供了系统的集合框架就将Vector改为实现List接口统一归入集合框架体系中 2.2.1) Stack Stack是Vector提供的一个子类用于模拟栈这种数据结构(LIFO后进先出) 2.3) LinkedList implements ListE, DequeE。实现List接口能对它进行队列操作即可以根据索引来随机访问集合中的元素。同时它还实现Deque接口即能将LinkedList当作双端队列使用。自然也可以被当作栈来使用 3) Queue Queue用于模拟队列这种数据结构(先进先出 FIFO)。队列的头部保存着队列中存放时间最长的元素队列的尾部保存着队列中存放时间最短的元素。新元素插入(offer)到队列的尾部访问元素(poll)操作会返回队列头部的元素队列不允许随机访问队列中的元素。结合生活中常见的排队就会很好理解这个概念 3.1) PriorityQueue PriorityQueue并不是一个比较标准的队列实现PriorityQueue保存队列元素的顺序并不是按照加入队列的顺序而是按照队列元素的大小进行重新排序这点从它的类名也可以看出来 3.2) Deque Deque接口代表一个双端队列双端队列可以同时从两端来添加、删除元素因此Deque的实现类既可以当成队列使用、也可以当成栈使用 3.2.1) ArrayDeque 是一个基于数组的双端队列和ArrayList类似它们的底层都采用一个动态的、可重分配的Object[]数组来存储集合元素当集合元素超出该数组的容量时系统会在底层重新分配一个Object[]数组来存储集合元素 3.2.2) LinkedList 1.2 Map Map用于保存具有映射关系的数据因此Map集合里保存着两组值一组值用于保存Map里的key另外一组值用于保存Map里的value。key和value都可以是任何引用类型的数据。Map的key不允许重复即同一个Map对象的任何两个key通过equals方法比较结果总是返回false。     关于Map我们要从代码复用的角度去理解java是先实现了Map然后通过包装了一个所有value都为null的Map就实现了Set集合。Map的这些实现类和子接口中key集的存储形式和Set集合完全相同(即key不能重复)     Map的这些实现类和子接口中value集的存储形式和List非常类似(即value可以重复、根据索引来查找) 1) HashMap 和HashSet集合不能保证元素的顺序一样HashMap也不能保证key-value对的顺序。并且类似于HashSet判断两个key是否相等的标准也是: 两个key通过equals()方法比较返回true、同时两个key的hashCode值也必须相等 1.1) LinkedHashMap LinkedHashMap也使用双向链表来维护key-value对的次序该链表负责维护Map的迭代顺序与key-value对的插入顺序一致(注意和TreeMap对所有的key-value进行排序进行区分) 2) Hashtable 是一个古老的Map实现类 2.1) Properties  Properties对象在处理属性文件时特别方便(windows平台上的.ini文件)Properties类可以把Map对象和属性文件关联起来从而可以把Map对象中的key-value对写入到属性文件中也可以把属性文件中的属性名-属性值加载到Map对象中 3) SortedMap 正如Set接口派生出SortedSet子接口SortedSet接口有一个TreeSet实现类一样Map接口也派生出一个SortedMap子接口SortedMap接口也有一个TreeMap实现类 3.1) TreeMap TreeMap就是一个红黑树数据结构每个key-value对即作为红黑树的一个节点。TreeMap存储key-value对(节点)时需要根据key对节点进行排序。TreeMap可以保证所有的key-value对处于有序状态。同样TreeMap也有两种排序方式: 自然排序、定制排序 4) WeakHashMap WeakHashMap与HashMap的用法基本相似。区别在于HashMap的key保留了对实际对象的强引用这意味着只要该HashMap对象不被销毁该HashMap所引用的对象就不会被垃圾回收。   但WeakHashMap的key只保留了对实际对象的弱引用这意味着如果WeakHashMap对象的key所引用的对象没有被其他强引用变量所引用则这些key所引用的对象可能被垃圾回收当垃圾回收了该key所对应的实际对象之后WeakHashMap也可能自动删除这些key所对应的key-value对 5) IdentityHashMap IdentityHashMap的实现机制与HashMap基本相似在IdentityHashMap中当且仅当两个key严格相等(key1 key2)时IdentityHashMap才认为两个key相等 6) EnumMap EnumMap是一个与枚举类一起使用的Map实现EnumMap中的所有key都必须是单个枚举类的枚举值。创建EnumMap时必须显式或隐式指定它对应的枚举类。EnumMap根据key的自然顺序 3. Java集合类使用场景规则 Set集合 1) HashSet的性能总是比TreeSet好(特别是最常用的添加、查询元素等操作)因为TreeSet需要额外的红黑树算法来维护集合元素的次序。只有当需要一个保持排序的Set时才应该使用TreeSet否则都应该使用HashSet 2) 对于普通的插入、删除操作LinkedHashSet比HashSet要略慢一点这是由维护链表所带来的开销造成的。不过因为有了链表的存在遍历LinkedHashSet会更快 3) EnumSet是所有Set实现类中性能最好的但它只能保存同一个枚举类的枚举值作为集合元素 4) HashSet、TreeSet、EnumSet都是线程不安全的通常可以通过Collections工具类的synchronizedSortedSet方法来包装该Set集合。 SortedSet s Collections.synchronizedSortedSet(new TreeSet(...)); List集合 1. java提供的List就是一个线性表接口ArrayList(基于数组的线性表)、LinkedList(基于链的线性表)是线性表的两种典型实现 2. Queue代表了队列Deque代表了双端队列(既可以作为队列使用、也可以作为栈使用) 3. 因为数组以一块连续内存来保存所有的数组元素所以数组在随机访问时性能最好。所以的内部以数组作为底层实现的集合在随机访问时性能最好。 4. 内部以链表作为底层实现的集合在执行插入、删除操作时有很好的性能 5. 进行迭代操作时以链表作为底层实现的集合比以数组作为底层实现的集合性能好 Map集合 1) HashMap和Hashtable的效率大致相同因为它们的实现机制几乎完全一样。但HashMap通常比Hashtable要快一点因为Hashtable需要额外的线程同步控制 2) TreeMap通常比HashMap、Hashtable要慢(尤其是在插入、删除key-value对时更慢)因为TreeMap底层采用红黑树来管理key-value对 3) 使用TreeMap的一个好处就是 TreeMap中的key-value对总是处于有序状态无须专门进行排序操作
http://www.huolong8.cn/news/57872/

相关文章:

  • 充电网站建设方案网站建设的方法步骤
  • 购买模板做网站先备案 做网站
  • 网站做一个要多少钱wordpress登录注册界面
  • 网站建设外包服务公司创业计划书vps网站目录权限设置
  • 无锡新区建设环保局网站软文外链购买平台
  • 管家婆crm123696飞猪关键词排名优化
  • 网站建设需要掌握什么技术网站维护具体做啥
  • 网站建设启动大会企业建站个人建站源码
  • 机电工程栏建设项目网站建设邢台专业网站建设公司
  • 微信公众平台网站开发天津市建设工程合同备案网站
  • 免费网站模板库专业建站服务公司
  • 创业 建网站网站 开发
  • 自己建设外贸网站网站站内文章互联
  • 电视台视频网站建设方案茶网站建设宗旨
  • 北湖建设局网站网站怎么做微信送红包活动
  • 九年级上册信息技术做网站建立网站建设
  • 威海网站设计公司招商网代理
  • 自己怎么建立自己的国际网站网站开发名词解释
  • 唐山做网站汉狮网络泉港网站建设推广服务公司
  • 网站建设的申请网站备案和备案的区别
  • 深圳网站建设服务温州网站外包
  • 网站建设写代码自己怎么创业惠州网站制作
  • 企业网站设计风格网站型销售怎么做
  • 做一元购物网站网站上的销售怎么做
  • 开发网站广州画册什么网站做方便
  • metro风格网站商标免费设计在线生成
  • 网站开发容易吗网络营销推广网站收录
  • 购物网站怎么做项目简介html简单的个人网页代码
  • 网站生成器怎么做网站怎么做数据分析
  • 网站上传后怎么打开野花香社区在线观看播放