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

做相框的网站设计之家房屋装修游戏破解版

做相框的网站,设计之家房屋装修游戏破解版,中铁招标在哪个平台,山东汽车行业网站开发Java中的集合框架是Java语言的核心部分#xff0c;提供了强大的数据结构来存储和操作对象集合。集合框架位于java.util包中#xff0c;主要可以分为两大类#xff1a;Collection#xff08;单列集合#xff09;和Map#xff08;双列集合#xff09;。下面是对它们的总结…Java中的集合框架是Java语言的核心部分提供了强大的数据结构来存储和操作对象集合。集合框架位于java.util包中主要可以分为两大类Collection单列集合和Map双列集合。下面是对它们的总结分类 Collection单列集合 List列表 ArrayList基于动态数组实现随机访问快插入和删除慢尤其是列表开头。LinkedList基于双向链表实现插入和删除操作快随机访问慢。Vector线程安全的动态数组实现功能类似于ArrayList但因同步开销大不推荐日常使用。Stack继承自Vector实现了后进先出(LIFO)栈的行为但通常建议使用Deque作为栈。 以下是针对Java List集合包括ArrayList、LinkedList、Vector、Stack的一些基本使用方式和常用增删改查操作的汇总。请注意尽管示例代码会以ArrayList为主但大部分操作对于所有List实现都是通用的除非特别说明。 增加元素 add(E element)在列表末尾添加一个元素。 list.add(New Element); add(int index, E element)在指定位置插入元素。 list.add(0, Inserted Element); // 在索引0处插入 删除元素 remove(Object o)删除第一次出现的指定元素。 list.remove(Element to Remove); remove(int index)根据索引删除元素。 list.remove(0); // 删除索引为0的元素 修改元素 set(int index, E element)替换指定位置的元素。 list.set(0, Updated Element); // 将索引0处的元素更新 查询元素 get(int index)返回指定位置的元素。 E element list.get(0); // 获取索引0处的元素 contains(Object o)检查列表是否包含指定元素。 boolean contains list.contains(Search Element); size()返回列表中的元素数量。 int size list.size(); 遍历元素 使用增强型for循环 for (E element : list) {System.out.println(element); } 或者使用迭代器Iterator IteratorE iterator list.iterator(); while (iterator.hasNext()) {E element iterator.next();System.out.println(element); } 特别注意 对于Stack除了上述通用操作外还可以使用push(E item)和pop()方法来模拟栈的“压栈”和“弹栈”操作。Vector的操作方式与ArrayList相似但由于线程安全设计在多线程环境下无需额外的同步措施但通常推荐使用Collections.synchronizedList(ListT list)或CopyOnWriteArrayList作为替代以获得更好的性能。 请根据实际需求选择合适的List实现并注意它们在并发访问时的安全性和性能差异。 set集合 HashSet基于哈希表实现无序、不允许重复元素性能依赖于哈希码的质量。LinkedHashSet基于哈希表与双向链表实现保持插入顺序不允许重复元素。TreeSet基于红黑树实现自然排序或自定义比较器排序不允许重复元素。 对于Set集合中的HashSet, LinkedHashSet, 和 TreeSet它们的增删查操作基本一致因为它们都遵循Set接口的规范但各自的特性和内部实现有所不同。下面是它们共有的常用操作方法以及一些特定于实现的特性说明 共同的增删查方法 添加元素add(E element) 向集合中添加一个元素。如果该元素已经存在于集合中根据对象的equals方法判断则此操作不会改变集合并返回false。否则元素会被成功添加并返回true。 删除元素remove(Object o) 从集合中移除指定的对象。如果集合中存在该元素根据equals方法判断则会将其移除并返回true否则返回false。 检查元素是否存在contains(Object o) 判断集合中是否包含指定的元素基于对象的equals方法进行比较。 清空集合clear() 移除集合中的所有元素。 获取集合大小size() 返回集合中的元素数量。 特定实现的注意事项 HashSet 无序存储不保证插入顺序。性能最优特别是在元素的哈希码分布良好的情况下。特有方法无因为HashSet主要依赖于其基础的哈希表特性。 LinkedHashSet 除了基于哈希表实现外还维护了一个双向链表来记录插入顺序。提供了迭代时的插入顺序保证。性能略低于HashSet因为需要维护额外的链表结构。 TreeSet 基于红黑树实现自然排序或自定义比较器排序保证元素有序。提供了丰富的排序相关操作如first(), last(), higher(E e), lower(E e)等可以方便地获取集合中的最小、最大或指定范围的元素。插入、删除和查找的时间复杂度通常是O(log n)其中n是集合中的元素数量。特有方法可以通过构造函数传入Comparator来自定义排序逻辑。 示例代码片段 // 创建集合实例 SetString hashSet new HashSet(); SetString linkedHashSet new LinkedHashSet(); SetString treeSet new TreeSet();// 添加元素 hashSet.add(Apple); linkedHashSet.add(Banana); treeSet.add(Cherry);// 删除元素 hashSet.remove(Apple);// 检查元素 boolean contains treeSet.contains(Cherry);// 集合大小 int size linkedHashSet.size();// 清空集合 treeSet.clear(); 这些方法为操作Set集合的基本手段具体选择哪种实现应根据是否需要有序性、是否关心插入顺序或是否有特定的排序需求等因素来决定。 Map双列集合 HashMap基于哈希表实现键值对映射非线程安全允许null键和null值。LinkedHashMap基于哈希表与双向链表实现维护插入顺序或访问顺序。TreeMap基于红黑树实现键自然排序或自定义比较器排序键唯一。Hashtable线程安全的哈希表较老的实现不推荐用于新代码已被ConcurrentHashMap取代。ConcurrentHashMap线程安全的哈希表支持高效并发读写优于Hashtable。 对于Map集合中的HashMap, LinkedHashMap, TreeMap, Hashtable, 和 ConcurrentHashMap它们都遵循Map接口提供了一套共同的操作方法来管理键值对但也各有特色。以下是一些常见的操作方法及其特定实现的特点 共同的增删查方法 添加/更新元素put(K key, V value) 将指定的键值对放入此映射中。如果此映射中已存在该键的映射关系则旧值将被替换。 获取元素get(Object key) 根据键获取对应的值如果键不存在则返回null。 删除元素remove(Object key) 根据键删除对应的映射关系如果存在则返回被删除的值。 检查键是否存在containsKey(Object key) 判断映射中是否包含指定的键。 检查值是否存在containsValue(Object value) 判断映射中是否包含指定的值。 清空映射clear() 移除此映射中的所有映射关系。 获取映射大小size() 返回此映射中的键值对数量。 特定实现的特性与操作 HashMap 特点非线程安全允许null键和null值性能较高特别是当哈希码分布良好时。特有方法无特别独有的方法重点在于其非线程安全性和性能优势。 LinkedHashMap 特点维护了插入顺序或访问顺序通过构造函数指定基于HashMap实现提供了迭代时的顺序保证。特有方法无特定新增方法主要是通过构造函数控制迭代顺序的特性。 TreeMap 特点键自然排序或自定义比较器排序保证了键的有序性基于红黑树实现。特有方法提供了丰富的基于排序的操作如firstKey(), lastKey(), lowerEntry(K key), higherEntry(K key)等。 Hashtable 特点线程安全的哈希表较老的实现不允许null键和null值同步操作可能导致性能下降。特有方法相对较少特有方法主要是其线程安全性的实现方式已过时。 ConcurrentHashMap 特点线程安全支持高效的并发读写通过分段锁技术降低了锁的竞争优于Hashtable。特有方法提供了一些高级并发操作如putIfAbsent(V value, K key), replace(K key, V oldValue, V newValue)等这些操作在原子性上有更好的保证。 示例代码片段 // 创建映射实例 MapString, Integer hashMap new HashMap(); MapString, Integer linkedHashMap new LinkedHashMap(16, 0.75f, true); // 第三个参数true表示按访问顺序排序 MapString, Integer treeMap new TreeMap(); // 自然排序 MapString, Integer hashtable new Hashtable(); MapString, Integer concurrentHashMap new ConcurrentHashMap();// 添加元素 hashMap.put(One, 1);// 获取元素 Integer value hashMap.get(One);// 删除元素 hashMap.remove(One);// 检查键是否存在 boolean containsKey hashMap.containsKey(One);// 获取映射大小 int size hashMap.size();// 清空映射 hashMap.clear(); 根据具体需求选择合适的Map实现比如需要线程安全时考虑ConcurrentHashMap需要维持插入顺序时选择LinkedHashMap需要键有序时使用TreeMap。 Queue队列 Queue 接口代表一个先进先出(FIFO)的队列。 LinkedList也可作为队列使用。PriorityQueue基于优先堆的无界优先队列没有固定顺序元素按照自然排序或比较器排序。ArrayBlockingQueue基于数组的有界阻塞队列线程安全。LinkedBlockingQueue基于链表的可选有界阻塞队列线程安全。DelayQueue基于优先级队列的延迟无界阻塞队列元素只有在延迟期满后才能被获取。ConcurrentLinkedQueue基于链表的无界并发队列线程安全非阻塞。 对于Java中的Queue接口及其常见实现包括LinkedList, PriorityQueue, ArrayBlockingQueue, LinkedBlockingQueue, DelayQueue, 和 ConcurrentLinkedQueue它们作为队列的主要操作包括入队添加元素、出队移除并获取元素、查看队首元素等。下面是它们的使用方式和基本操作的汇总 公共操作 入队添加元素 add(E element)如果队列未满则添加元素队满时抛出IllegalStateException。offer(E element)尝试加入元素队列满时返回false而不是抛出异常。put(E element)对于阻塞队列如ArrayBlockingQueue, LinkedBlockingQueue如果队列满当前线程将被阻塞直到空间可用。 出队移除并获取元素 remove() 或 poll()移除并返回队首元素队列为空时remove() 抛出异常而 poll() 返回null。take()对于阻塞队列如果队列为空当前线程将被阻塞直到有元素可用。 查看队首元素 element() 或 peek()返回队首元素但不移除队列为空时element() 抛出异常peek() 返回null。 特定实现的特性 LinkedList 作为动态数组实现的List也可以当作FIFO队列使用但不支持阻塞操作。常用操作直接调用addLast(E element)入队removeFirst()或pollFirst()出队。 PriorityQueue 基于优先堆的无界优先队列保证最高优先级的元素先出队。特有操作无特定的队列操作但其排序特性基于自然排序或Comparator是其特色。 ArrayBlockingQueue 固定大小的阻塞队列线程安全。特有操作支持公平策略和非公平策略的阻塞控制。 LinkedBlockingQueue 可选固定大小的阻塞队列基于链表实现线程安全。特有操作默认无界除非构造时指定了容量提供了阻塞和非阻塞的put/take操作。 DelayQueue 基于优先级队列的无界阻塞队列元素需实现Delayed接口只有延迟到期的元素才可被消费。特有操作入队元素需实现getDelay()方法以确定其到期时间。 ConcurrentLinkedQueue 无界的并发队列基于链表实现线程安全非阻塞。特有操作专门设计用于高并发场景无需锁定采用CAS操作保证线程安全。 示例代码片段 QueueString queue;// 使用LinkedList作为队列 queue new LinkedList(); queue.offer(A); queue.poll();// 使用PriorityQueue queue new PriorityQueue(); queue.offer(B); queue.poll();// 使用ArrayBlockingQueue阻塞队列 queue new ArrayBlockingQueue(10); queue.put(C); queue.take();// 使用LinkedBlockingQueue queue new LinkedBlockingQueue(); queue.put(D); queue.take();// 使用DelayQueue queue new DelayQueue(); queue.put(new DelayedElement(Delayed E)); queue.take();// 使用ConcurrentLinkedQueue queue new ConcurrentLinkedQueue(); queue.offer(F); queue.poll(); 请注意使用DelayQueue时元素必须实现Delayed接口并重写getDelay()方法和compareTo()方法。 Deque双端队列 Deque 接口扩展了Queue允许两端进行插入和删除操作。 ArrayDeque基于可调整大小的数组实现可作为栈或队列使用非线程安全。LinkedList同样实现了Deque接口提供了双端队列的功能。 对于Java中的Deque接口及其两个主要实现类ArrayDeque和LinkedList它们提供了丰富的双端队列操作支持在队列的头部和尾部进行高效的插入和删除。以下是它们的使用方式和常用操作的汇总 公共操作适用于ArrayDeque和LinkedList 在前端操作 插入addFirst(E element) / offerFirst(E element) 在队列头部添加元素。移除removeFirst() / pollFirst() 移除并返回队列头部的元素如果队列为空removeFirst()会抛出异常而pollFirst()返回null。查看getFirst() / peekFirst() 查看队列头部的元素但不移除如果队列为空getFirst()抛出异常peekFirst()返回null。 在后端操作 插入addLast(E element) / offerLast(E element) 在队列尾部添加元素。移除removeLast() / pollLast() 移除并返回队列尾部的元素如果队列为空removeLast()抛出异常pollLast()返回null。查看getLast() / peekLast() 查看队列尾部的元素但不移除如果队列为空getLast()抛出异常peekLast()返回null。 其他通用操作 大小查询size() 返回队列中元素的数量。是否为空isEmpty() 判断队列是否为空。 实现类特性 ArrayDeque 特点基于可调整大小的环形数组实现提供了非常高的访问和修改性能特别是对于随机访问和循环迭代。非线程安全适用于不需要线程同步的高性能场景。优势在大多数场景下由于其底层数据结构的优化性能优于LinkedList。 LinkedList 特点基于双向链表实现既是List也是Deque因此支持更多的操作如索引访问等。适合于需要频繁进行插入和删除操作的场景尤其是当这些操作发生在集合中间时。非线程安全。优势对于插入、删除操作尤其是在链表中间的操作表现优秀但随机访问性能不如ArrayDeque。 示例代码片段 DequeString deque;// 使用ArrayDeque deque new ArrayDeque(); deque.addFirst(Front); deque.addLast(Back); String first deque.peekFirst(); // 查看队首元素 deque.pollLast(); // 移除并返回队尾元素// 使用LinkedList作为Deque deque new LinkedList(); deque.offerFirst(Front); deque.offerLast(Back); String last deque.peekLast(); // 查看队尾元素 deque.pollFirst(); // 移除并返回队首元素 根据具体需求选择合适的数据结构对于追求性能和简单操作的场景ArrayDeque可能是更好的选择而对于需要更多灵活性和链表特性的操作LinkedList会更加适用。 以上是Java集合框架的主要组成部分它们为处理和操作集合提供了高度灵活和强大的工具。选择合适的集合类型取决于具体的应用场景如是否需要线程安全、是否关心元素的顺序、是否需要排序等。
http://www.dnsts.com.cn/news/189087.html

相关文章:

  • 怎么建设网站赚钱手机杭州哪里找网站建设的兼职
  • 福州天成设计我的企业网站怎么seo
  • 保定网站建设方案学做软件的网站有哪些内容
  • 做盗版电影网站赚钱iis两个网站做ssl
  • wordpress 整站采集高端网站建设企业
  • 移动网站开发面试题网站底色什么颜色好看
  • 嘉兴快速建站模板软件外包网站
  • wordpress是动态国外seo查询
  • 利州区住房和城乡建设部网站竞价网
  • 建网站的经历怎样做网站宣传
  • 网站 文件注入网站内部链接如何进行优化建设
  • 北京网站建设 和君网站主目录权限配置
  • logo商标设计网站兰州起点网站建设公司
  • 在线咨询网站模板长沙网站seo源头厂家
  • 工信部网站原来是软件开发外包服务
  • 网站备案负责人照片著名的国外设计网站
  • 漂亮网站首页 html遵化市城乡建设规划局网站
  • 深圳响应样式网站建设费用网站推广专员的岗位职责是什么
  • 网站企业地图天体摄影
  • 南京网站制作步骤东莞培训网站建设
  • wordpress整站密码访问杭州app开发公司普悦科技
  • 吴忠门户网站建设wordpress博客设置主题方法
  • 金山做网站威海做网站的公司哪家好
  • 网站开发 阿里wordpress的分类目录和标签
  • 扁平化的网站结构图搜狗首页排名优化
  • 郑州网站建设工作室网站顶部小图标怎么做
  • 长宁做手机网站建设现在币圈有那些私募网站做的好
  • 外贸网站制作策划厦门建设工程交易中心网站
  • 阿里云申请域名后网站网站自动售卡怎么做
  • 上海网站平台建设wordpress主题缩略图不显示