java编程思想-7

本文详细介绍了Java中的容器类,包括Collection和Map的基本概念及其子类的特点。探讨了不同容器类的应用场景,例如ArrayList适用于大量随机访问,而LinkedList更适合频繁的插入和删除操作。此外还介绍了如何使用迭代器遍历容器,以及队列和堆栈等特殊容器的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java编程思想 -持有对象

当我们创建有限个对象时,可以使用数组存储,但是当我们存储不去定数量的对象时,就需要新的策略来解决这个问题。持有对象,就是通过Java的容器类来保存对象。

1、基本概念

1:Collection,一个独立元素序列,包含三类:List(按照插入顺序保存元素),Set(不能有重复的元素,不按照插入序列保存元素),Queue(按照排队的方式来确定对象的顺序)。这一类属于线性表。
2:Map,一组成对的“键值”对象,其实用字典来称呼更合适,因为字典上有字(key)以及其对应的解释(value)。
在对容器使用的过程中,建议构造子类的实例对象然后向上转型为接口对象。这样的话,修改所使用的容器会比较方便。如:

List<Apple> list = new ArrayList<>();

2、添加一组元素

在java.util包的Arrays类和Collections类中有比较多的实用方法。添加一组数据的方法有:(注意以下方法的参数)

  • Collections.addAll()
  • Arrays.asList(数组参数); #该方式产生的List的尺寸不可调节,否则它将修改原来的数组。
  • Arrays.asList();//避免因参数只是存在共同父类而无法统一List的类型。
  • Collections.sort(); //对数据排序
  • Collections.shuffle(); //打乱数据顺序

3、容器的打印

打印容器中的数据,可以直接使用System.out.print(Collection/Map)。常用的还是使用迭代器对容器中的数据进行读取。

4、List

主要有两个子类:ArrayList,LinkedList。
ArrayList:线性存储数据,数据按照插入次序进行排列。底层是通过数组实现,当数据量增加时,则创建更大容量的数组来装配元素。随机访问比较快,从中间插入和移除效率比较低。
LinkedList:底层是通过链表实现的,对于插入和删除操作效率较高。可以使用该容器实现Stack(堆栈)和Queue (队列)的功能。

5、迭代器

迭代器(Iterator):便利并且选择序列中的对象。它只能单向移动。它统一了容器的访问方式。

  • 使用iterator()方法让容器返回一个Iterator对象;
  • 使用next()返回下一个元素,内部使用的是return get(index++)的方式;
  • 使用hasNext()判断是否还有元素;
  • 使用remove()删除容器中的元素。(之前必须使用next()方法)
    ListIterator类是只能用于List类中,这是一个可以双向移动迭代器。

6、Stack(堆栈)

堆栈:先进先出的线性表。定义方式如下:

Stack<Apple> stack = new Stack<>();
stack.push(new Apple()); //入栈
stack.pop(); //出栈

7、Set

Set:存放不可重复的元素。其主要有两个子类HashSet和TreeSet。Set数据集合主要用来数据的查找。

  • HashSet是通过散列表的形式存储数据;
  • TreeSet是通过红黑树的方式存储数据。

8、Map

通过键值的方式存储数据,容器中存储容器可以实现数据的多维存储。Map的keySet()方法返回一个key的集合,可用于对Map的遍历。当然还有可以使用Map.Entry来实现对Map的遍历,这个类似于List中的Iterator。使用方式如下:

for(Map.Entry entry : map.entrySet()){
    entry.getKey();
    entry,getValue();
}

Map内有个entrySet()方法返回一个Set集合(元素为Entry对象)。

9、Queue和PriorityQueue

队列:先进先出的线性表。LinkedList也实现了Queue的队列,因此可以使用LinkedList.
使用peek()返回队头元素(不删除),poll()返回队头元素(删除),offer()方法插入元素到队尾。
PriorityQueue可以确保peek(),poll(),remove()时,获取的都是队列中优先级最高的元素。默认是按照自然顺序排列。

10、Foreach和迭代器

Foreach可以用于数组,也可以用于任何Collection对象。同样可以用于实现了Iterable的接口类容器。在实现Iterable接口的类中要实现三个hasNext(),next()和remove()方法。

11、总结

1:数组将数字与对象联系在一起。
2:Collection保存单一元素,Map保存键值对。
3:大量随机访问使用ArrayList,经常插入和删除则使用LinkedList。
4:各种Queue以及栈的行为,可使用LinkedList提供支持。
5:HashMap设计用来快速访问;TreeMap保持键处于排序状态;LinkedHashMap保持元素插入有序,通过散列提供快速访问。
6:HashSet提供最快的查询速度,而TreeSet保持元素的排序状态,LinkedHashSet以插入顺序保存元素。
7:保持Map和Collection联系的就是Map的entrySet()方法和values()产生Collection。

通达信行情API是金融数据提供商通达信(TongDaXin)为开发者和金融机构提供的接口服务,用于获取实时及历史的股票、期货、期权等金融市场数据。这个API允许用户在自己的应用程序中集成通达信的数据服务,实现个性化数据分析、交易策略开发等功能。 1. **API基本概念** - **API**:Application Programming Interface,应用程序编程接口,是软件之间交互的一种方式,提供预定义的函数和方法,使得其他软件能够调用特定功能。 - **通达信**:国内知名的金融终端软件提供商,提供股票、期货、基金等市场数据,以及交易服务。 2. **通达信API的功能** - **实时行情**:获取股票、期货、期权等市场的实时报价信息,包括最新价、涨跌额、涨跌幅、成交量等。 - **历史数据**:获取历史交易日的K线数据、分时数据、交易量等信息,支持自定义时间段查询。 - **深度数据**:获取买卖盘口的五档报价和成交量,有助于分析市场买卖意愿。 - **资讯信息**:获取公告、研报、新闻等市场资讯。 - **交易委托**:通过API进行交易下单、撤单等操作,实现自动化交易。 3. **TdxHqApi** - **TdxHqApi** 是通达信行情API的具体实现,它包含了调用通达信数据服务的各种函数和类,如获取股票列表、获取实时行情、获取历史数据等。 - 开发者需要按照API文档的指示,导入TdxHqApi库,然后通过调用相应的函数来获取所需数据。 4. **使用步骤** - **安装**:下载并安装通达信API的SDK,通常包括文件和动态链接库。 - **初始化**:在代码中实例化API对象,进行连接设置,如服务器地址、端口号等。 - **连接**:连接到通达信服务器,进行身份验证。 - **数据请求**:调用对应的API函数,例如`GetS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧阳小伙

您的打赏是我创作的:最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值