Java Collection更有效管理Elements

SolidWorks软件二次开发:使用C#进行SolidWorks二次开发 SolidWorks 提供的 API(应用程序编程接口)允许开发者使用多种编程语言(如 C#、VB.NET 等)来控制和扩展 SolidWorks 的功能。API 架构基于 COM(组件对象模型),这意味着开发者可以通过引用 SolidWorks 的类型库来访问其对象模型。SolidWorks 的对象模型包括了从文档、零件、装配体到特征、草图等所有 SolidWorks 中可操作的对象。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> Sets 在Java Collection结构中,一个set就是众多元素中的一个collection,它确定了含有等同元素的精确的set模型,Set界面拓展了collention界面,意思就是说你可以在set中增加Object、删除object以及重新迭代等等。Set界面增加了两种名称均为排列的方法,而且可以把一个set转换成一列objects。 SortedSets SortedSets是实现按从小到大顺序排列元素这一迭代过程的set。Set中的元素都按自然顺序或者比较法进行分类。 Comparators Comparators是定义比较函数或等函数的界面,这样运行它的object结果是实现比较或等价功能,Comparators被传递给分类法来控制众多元素的分类程序。 Maps 与Set不同,Map并不是由Collection生成,相反,它提供了用某些键输入、输出值的界面,与java.util.Hashtable非常类似。 Map是包含一列键/值对的对象,Map不包含复制键,而且每个键也只能有一个值,Map可以实现恢复一套键、一组值以及一系列mapping的功能。 Sorting 对于collection结构有两种基本的分类方式 可以采用Collection类中两种静态法的任意一种运行列表界面来对Object进行分类。一种方法是获得运行比较界面的列表参数,另一种方法就是获得列表参数、比较参数并把采用比较对象的列表元素进行分类。 还可以把比较界面功能加到Collention类中,在类中加入了比较法,得到的结果就是从第一个参数中减去第二个参数,然后把Collection对象传递给运行比较界面的对象。 表A中的例子证明了对MySortedMapComparator对象进行分类的比较界面。 Listing A class MySortedMapComparator implements Comparator { public MySortedMapComparator() { } public int compare(Object o1, Object o2) { return ((MySortedMapImpl)o1).compareTo((MySortedMapImpl)o2); } public boolean equals(Object obj) { if (!(obj instanceof MySortedMapComparator)) return false; return false; } } SortedMaps SortedMaps就是能够提供按从小到大排列元素功能的map,这些元素都按自然顺序或者比较法进行分类。见表B中的例子。 Listing B import java.util.*; public class MySortedMapImpl implements SortedMap, Comparable { private java.util.HashMap hashMap = new java.util.HashMap(); private Comparator comparator = null; public MySortedMapImpl() { this.comparator = new MySortedMapComparator(); } public MySortedMapImpl(HashMap hashMap) { this.hashMap = hashMap; this.comparator = new MySortedMapComparator(); } public void clear() { hashMap.clear(); } public boolean containsKey(Object key) { return hashMap.containsKey(key); } public boolean containsValue(Object value) { return hashMap.containsValue(value); } public Set entrySet() { return hashMap.entrySet(); } public boolean equals(Object o) { return hashMap.equals(o); } public Object get(Object key) { return hashMap.get(key); } public int hashCode() { return hashMap.hashCode(); } public boolean isEmpty() { return hashMap.isEmpty(); } public Set keySet() { return hashMap.keySet(); } public Object put(Object key, Object value) { return hashMap.put(key, value); } public void putAll(Map t) { hashMap.putAll(t); } public Object remove(Object key) { return hashMap.remove(key); } public int size() { return hashMap.size(); } public Collection values() { return hashMap.values(); } public Comparator comparator() { return this.comparator; } public java.util.SortedMap subMap(Object fromKey, Object toKey) { if (toKey == null) throw new NullPointerException("toKey == null"); if (!(toKey instanceof MySortedMapImpl)) throw new ClassCastException("toKey not a comparable object"); HashMap aHashMap = new HashMap(); Iterator keys = keySet().iterator(); while (keys.hasNext()) { Object key = keys.next(); if ((comparator.compare(key, fromKey) >= 0) && (comparator.compare(key, toKey) < 0)) { Object value = hashMap.get(key); aHashMap.put(key, value); } } if (aHashMap.isEmpty()) throw new IllegalArgumentException("toKey is out of range."); MySortedMapImpl aSubMap = new MySortedMapImpl(aHashMap); return aSubMap; } public java.util.SortedMap headMap(Object toKey) { if (toKey == null) throw new NullPointerException("toKey == null"); if (!(toKey instanceof MySortedMapImpl)) throw new ClassCastException("toKey not a comparable object"); HashMap aHashMap = new HashMap(); Iterator keys = keySet().iterator(); while (keys.hasNext()) { Object key = keys.next(); if (comparator.compare(key, toKey) < 0) { Object value = hashMap.get(key); aHashMap.put(key, value); } } if (aHashMap.isEmpty()) throw new IllegalArgumentException("toKey is out of range."); MySortedMapImpl aHeadMap = new MySortedMapImpl(aHashMap); return aHeadMap; } public java.util.SortedMap tailMap(Object fromKey) { if (fromKey == null) throw new NullPointerException("fromKey == null"); if (!(fromKey instanceof MySortedMapImpl)) throw new ClassCastException("fromKey not a comparable object"); HashMap aHashMap = new HashMap(); Iterator keys = keySet().iterator(); while (keys.hasNext()) { Object key = keys.next(); if (comparator.compare(key, fromKey) >= 0) { Object value = hashMap.get(key); aHashMap.put(key, value); } } if (aHashMap.isEmpty()) throw new IllegalArgumentException("fromKey is out of range."); MySortedMapImpl aTailMap = new MySortedMapImpl(aHashMap); return aTailMap; } public Object firstKey() { if (isEmpty()) throw new NoSuchElementException("Map is empty"); return keySet().iterator().next(); } public Object lastKey() { if (isEmpty()) throw new NoSuchElementException("Map is empty"); Object key = null; Iterator keys = keySet().iterator(); while (keys.hasNext()) { key = keys.next(); } return key; } public int compareTo(Object o) { // simple compares shown for demo purposes if (!(o instanceof MySortedMapImpl)) return -1; if (hashMap.equals(((MySortedMapImpl)o).hashMap) == false) return 1; if (comparator.equals(((MySortedMapImpl)o).comparator()) == false) return 1; return 0; } } public class SortedMapExample { public static void main(String args[]) { MySortedMapImpl aSortedMap = new MySortedMapImpl(); aSortedMap.put("1", "ItemOne"); aSortedMap.put("2", "ItemTwo"); aSortedMap.put("3", "ItemThree"); Iterator keys = aSortedMap.keySet().iterator(); while (keys.hasNext()) { Object key = keys.next(); Object value = aSortedMap.get(key); System.out.println("key: " key.toString() ", Value: " value.toString()); } aSortedMap.remove(aSortedMap.lastKey()); keys = aSortedMap.keySet().iterator(); while (keys.hasNext()) { Object key = keys.next(); Object value = aSortedMap.get(key); System.out.println("key: " key.toString() ", Value: " value.toString()); } } } Sorting it all out Java Collection结构为表示分类集合和未分类集合的核心Java APIs增加了兼容的标准API。因为Collection结构的API都是相互兼容的,因此一旦学会了结构中的一部分,就会理解很多概念。这样就会让你少走很多弯路。下一篇文章中将要开始讨论Java平台的输入/输出系统。
SEGGER Embedded Studio初体验 先楫HPM5E00EVK开发环境搭建 阅读详情

相关推荐

8.5/Q1,Charls最新高分文章解读!

8 257名受试者中,672人(8.14%)在9年内发生过卒中。在调整的多因素cox回归模型中,TyG和ABSI仍然是卒中的预测因素,TyG的HR为1.25(95%CI:1.06~1.47),ABSI的HR为1.33(95%CI:1.06~1.68)。TyG和ABSI联合诊断效能最高(AUC:0.579,95%CI:0.553~0.597),而TyG(AUC:0.566,95%CI:0.544~0.587)和ABSI(AUC:0.533,95%CI:0.524~0.597)的诊断效能最低。

gsky_sci的博客 1017

向对象编程:Java collection更有效管理elements(转)

Sets 在Java Collection结构中,一个set就是众多元素中的一个collection,它确定了含有等同元素的精确的set模型,Set界面拓展了collention界面,意思就是说你可以在set中增加Object、删除object以及重新迭代等等。Set界面增加了两种名称均为排列的方法,而且可以把一个set转换成一列objects。 SortedSets Sor...

weixin_34001430的博客 96

银河飞腾FT-M6678 DSP开发初体验:从仿真器连接到第一个网络程序(CCS5.5+FT-EMU560实战)

本文详细介绍了银河飞腾FT-M6678 DSP开发环境的搭建过程,包括CCS5.5开发环境的配置、FT-EMU560仿真器的连接与设置,以及关键模块如网络驱动的国产化替换。通过实战案例,帮助开发者快速掌握国产DSP的开发流程,实现网络通信功能。

weixin_30919429的博客 556

面向对象编程:Java collection更有效管理elements

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java

java专栏 248

3、基于视觉的智能分拣机:原理、算法与应用

本文介绍了一种基于视觉的智能分拣系统,利用树莓派、相机模块和多种检测算法实现低成本、高精度的物体分拣。系统支持颜色、形状和尺寸三种检测方式,准确率达99%,广泛适用于制造业、农业和物流等领域。文章详细阐述了各检测算法原理、测试结果及系统优化方向,并探讨了其实际应用案例与未来发展前景。

mqtt6iot的博客 238

微搭低代码实现用户登录及注册功能

在小程序开发中,我们可以拿到微信用户的openid,openid可以作为用户的唯一标识,在查询数据的时候可以进行数据过滤实现查询自己提交的数据。那微搭中是否也有openid这个概念,可以获取用户自己提交的数据呢? 答案是肯定的,那要怎么去做呢?思路是先创建一个数据源方法,在数据源中返回openid,然后低代码中可以调用数据源的方法并且赋值给全局变量,这样在后续的业务中从全局变量就可以获取openid了,方便做数据权限的控制。 为了实现这个目的,我们从创建数据源开始。 创建数据源 我们先创建一个用户管理的数据

低代码布道师的博客 3000

面向对象编程之:Java collection更有效管理elements

前面的文章中,我们讨论了“转成OOP:Java中抽象数据类型”、抽象数据类型(ADT)如何表示软件结构,以及开发人员可以应用ADT(不需知道具体操作细节)来封装面向对象程序。我们还讨论了Java 2软件开发工具箱中的collection提供的类问题并解释了如何创建更有效的抽象数据类型。本文中,我们将要说说collections中的其他类及其特性并看看它的分类能力。    Sets  在Java C

JAVA|J2EE|J2ME|JDK|JSP 377

大模型微调部署实战及类GPT工具的高效使用

本文主要介绍了专栏《大模型微调部署实战及类GPT工具的高效使用》的核心内容,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 专栏亮点 3. 你的收获 4. 详细目录

herosunly的博客 22万+

Java集合类——Collection

Collection是集合类层次中的根接口(就是祖宗) JDK不提供此接口的任何实现,它提供更特定的子接口(比如Set和List)的实现。 Collection接口通常用于传递集合并在需要最大通用性的地方操作它们。 官方API中还有一句,不知道啥意思,暂且不管 Bags or multisets (unordered collections that may contain duplicate e...

有趣的博客 356

S7-1200PLC与昆仑通态触摸屏以太网通信的具体方法和步骤(图文)

S7-1200PLC与昆仑通态触摸屏以太网通信的具体方法和步骤(图文)

Robot_PLC_HMI_Automation 1万+

微信小程序数据采集实战:抓包+接口分析+动态数据全流程

微信小程序爬虫虽然比普通网页爬虫复杂,但只要掌握了正确的方法,其实并没有想象中那么难。核心思路就是:先绕过证书校验抓包,然后反编译小程序找到加密逻辑,最后用Python模拟相同的加密和解密过程。需要特别提醒的是,本文仅供技术研究使用。请遵守《网络安全法》和相关法律法规,不要爬取他人的敏感数据,不要将爬虫技术用于非法用途。尊重他人的知识产权和数据安全,才能让技术发挥真正的价值。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1095

面向对象编程:Java collection更有效管理elements

Sets 在Java Collection结构中,一个set就是众多元素中的一个collection,它确定了含有等同元素的精确的set模型,Set界面拓展了collention界面,意思就是说你可以在set中增加Object、删除object以及重新迭代等等。Set界面增加了两种名称均为排列的方法,而且可以把一个set转换成一列objects。 SortedSets SortedSets...

weixin_30695195的博客 73

SAP PS 收入确认方法配置清单(成本推导收入 / 项目进度推导收入)

摘要:本文详细介绍了SAPPS模块中两种收入确认方法的配置流程:成本推导收入(成本比例法)和项目进度推导收入(里程碑法)。通过事务码OKG1-OKG5等关键配置步骤,分别实现基于累计成本比例和里程碑完成权重的收入确认逻辑。文章对比了两种方法的适用场景和管控要点:成本法适用于成本与进度强相关的项目,需严控预计总成本;进度法则依赖明确的里程碑验收。同时提供了落地建议,包括项目类型绑定、数据校验和变更管控等最佳实践,为SAPPS系统收入确认功能实施提供完整指导。

金牌架构师 953

Java集合(Collection)

概述 概念:集合类(Collection)存放于java.util包中,是用来管理一组对象的单一对象。 集合类存放的都是对象的引用(即地址信息),而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用。 集合内的对象被称之为元素(elements)。 通常,集合可以处理很多种类型的对象,这些对象都有一个共同的父类Object 分类 集合类型主要有3种:set(集)、list(列表...

WQY992的博客 589

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java ~ Collection/Executor ~ ArrayBlockingQueue【源码】

ArrayBlockingQueue(数组阻塞队列)类(下文简称数组阻塞队列)是BlockingQueue(阻塞队列)接口的主要实现类之一,也是Executor(执行器)框架常用的实现之一,采用数组的方式实现。 数组阻塞队列类不允许存null值。 数组阻塞队列类只能作为有界队列使用。 数组阻塞队列类是线程安全的。 数组阻塞队列类支持公平访问策略。 数组阻塞队列类的迭代器是弱一致性。

说淑人的所思所想 476

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Collection - ArrayList 源码解析

参考 深入Java集合学习系列: ArrayList的实现原理 Java ArrayList源码剖析 结合源码对ArrayList进行讲解 概述 ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量(capacity),表示底层数组的实际大小,...

MindMaster_X的博客 328

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java集合篇

Java集合框架是一组用于管理和操作对象的类和接口。它的目标是提供一种通用的方式来处理数据集合,从而使开发人员能够更容易地进行数据操作。集合框架的核心优势包括:高效的数据结构、丰富的算法、灵活的操作方式等。可以实现Collection接口或Map接口,以创建自定义的集合。自定义集合可以根据特定需求进行定制,实现特定的操作和行为。

m0_68137807的博客 118

Java集合元素遍历的两种方式

Java集合元素遍历的两种方式:1、增强版for循环;2、迭代器遍历。

m0_61312533的博客 879

Java集合框架核心解析与最佳实践

Java集合框架是处理数据结构的标准化工具集,基于接口与实现分离的设计理念,提供了List、Set、Queue和Map四大核心体系。其底层通过动态数组、链表、红黑树等数据结构实现,支持O(1)到O(log n)时间复杂度的操作。在工程实践中,合理选择ArrayList与LinkedList、HashMap与TreeMap等实现类,能显著提升系统性能。特别在高并发场景下,CopyOnWriteArrayList和ConcurrentHashMap等线程安全集合解决了数据一致性问题。通过初始化容量优化、避免装箱

weixin_30279315的博客 385

Size-limited queue that holds last N elements in Java

A very simple & quick question on Java libraries: is there a ready-made class that implements aQueuewith a fixed maximum size - i.e. it always allows addition of elements, but it will sil...

weixin_33994444的博客 147

PyFlink Table API 连接器使用指南:DDL 定义、依赖管理、预置 Source/Sink 与 Pandas 互转

> 本文基于 Apache Flink 官方文档 [Python Table API Connectors](https://link.gitcode.com/i/744831ed41cd93fffcd3028597075261) 编写,并结合当前仓库中 PyFlink 的 Python 与 Java 源码展开说明。Flink 本质上是基于 Java/Scala 的分布式计算引擎,连接器(Conn

gitblog_00953的博客 683

java集合类总结

Collection接口通常不能直接使用,但是该接口提供了添加删除管理数据的方法,由于List接口和Set接口都实现了他的方法,因此这些方法对List和Set集合都是通用的。 方法如下: add(Element e) 添加特定对象进集合 remove(Object o) ...

weixin_30662849的博客 58

从源码到实战:深度剖析Java集合核心面试题

本文深度剖析Java集合框架的核心面试题,从源码层面解析ArrayList、LinkedList、HashMap等关键类的实现原理与优化策略。涵盖线程安全集合方案对比及性能优化实战经验,帮助开发者掌握集合框架的精髓,提升面试表现和实际开发能力。

weixin_34268579的博客 427

CS-Notes Java 容器指南:ArrayList、HashMap、ConcurrentHashMap 的选型标准与 JDK 源码级实现剖析

本文基于 CS-Notes 仓库的 Java 容器 笔记整理扩展,系统梳理 Java 容器框架中 Collection 与 Map 两大体系的实现选型依据(时间复杂度、有序性、线程安全三维度),并深入到 JDK 源码层面剖析 ArrayList 扩容与 Fail-Fast、HashMap 拉链法与桶下标的位运算优化、ConcurrentHashMap 分段锁与 size 无锁统计、LinkedHa

gitblog_01060的博客 748

Java顺序表实现与优化全解析

顺序表是数据结构中最基础的线性存储结构,通过连续内存空间实现高效随机访问。其核心原理是利用数组存储元素,通过动态扩容机制应对容量变化。在Java开发中,顺序表实现涉及泛型处理、容量管理和性能优化等关键技术点。典型应用包括ArrayList等集合类实现,适用于读多写少的场景。通过1.5倍扩容策略和System.arraycopy优化,可以平衡内存使用与操作效率。本文以Java实现为例,详解顺序表的动态扩容、快速失败机制等核心特性,并对比分析其与标准库ArrayList的差异。

weixin_30954265的博客 325

十分钟让 Mac 跑起 Windows 应用:Whisky 容器创建与 Windows 应用运行指南

一个 .exe 安装包发到你的 Mac 上,双击却提示无法打开?Whisky 是一个免费开源的 Wine 包装工具,让你在 Apple Silicon Mac 上直接运行 Windows 应用:不用装完整 Windows,也不用开虚拟机,建一个 bottle 容器,.exe 就能启动。下面这条路径可以在 10 分钟内走完:装好 Whisky、初始化运行库、创建容器、跑通第一个 Windows 程序

gitblog_00435的博客 240
上一篇: 经典J2EE开发工具-IBM Eclipse简史
下一篇: Java中对HashMap的深度分析与比较
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值