Java集合框架详解:ArrayList与集合操作

需积分: 0 1 下载量 9 浏览量 更新于2024-08-23 收藏 712KB PPT 举报
"本资源主要讨论使用集合时的注意事项,特别是在Java编程中,涉及集合框架的概念,包括接口、实现类和算法操作类。同时,详细介绍了ArrayList类的使用方法和特性。" 在Java编程中,集合是用于存储多个对象元素的数据结构,便于数据的存储、检索、操纵和传输。集合框架是Java提供的一个强大工具,它包含一系列接口、实现类以及算法操作类,这些都位于`java.util`包内。集合框架的核心接口有`Collection`和`Map`,其中`Collection`接口是所有单值容器的基础,而`Map`接口则用于存储键值对。 `Collection`接口的子接口`List`代表有序的、允许重复元素的集合,`ArrayList`和`LinkedList`都是`List`接口的实现类。`ArrayList`是基于可变大小的数组实现的,它提供了快速的随机访问和遍历操作。`LinkedList`则采用链表结构,适合于频繁的插入和删除操作,但在随机访问上的效率较低。 `ArrayList`类的主要方法包括: - `ArrayList()`: 构造方法,用于创建一个新的空列表。 - `add(Object)`: 向列表尾部添加一个元素。 - `remove(int)`: 删除指定索引位置的元素。 - `size()`: 返回列表中元素的数量。 - `contains(Object)`: 检查列表是否包含指定的元素。 - `set(int, Object)`: 在指定位置替换元素。 - `get(int)`: 获取指定位置的元素。 在实际使用中,创建一个`ArrayList`对象如下: ```java ArrayList<String> list = new ArrayList<String>(); ``` 接着,可以向列表中添加元素: ```java list.add("element1"); list.add("element2"); ``` 需要注意的是,当从集合中取出元素时,特别是从泛型集合中取出非原始类型对象,由于Java的类型擦除,取出的对象会被自动转为`Object`类型,需要进行强制类型转换回原来的类型,例如: ```java Rabbit rabbit = (Rabbit) collection.get(index); ``` 总结起来,理解并熟练运用Java集合框架,特别是`ArrayList`类,对于编写高效且易于维护的Java代码至关重要。正确地使用集合能够优化程序性能,简化数据处理,并确保代码的灵活性。

Linux中部署完mongoDB后写出以下问题代码1.创建数据库mydb,并给指定的集合添加文档,集合用自己的名字命名(比如:张雪峰,就用zxf命名,用zhangxuefeng也可以) (1).用insert()向集合中添加:_id为1001,姓名为张三,年龄为20的文档。 (2).用insert()向集合中添加:姓名为赵四,年龄为40岁的文档。 (3)用save()向集合中添加:姓名为赵四,年龄为20岁的文档。 (4)查询各自集合中的内容。 (5)用insert()向集合中添加:_id为1001,姓名为李白,年龄为30的文档。 (6)用save()向集合中添加:_id为1001,姓名为李白,年龄为30的文档。 (新版本shell改为用insertOne()和insertMany()进行插入) 2.查找文档 (1).查找集合中姓名为赵四的文档。 (2).查找集合中姓名为赵四,年龄为40的文档。 (3).使用命令查找集合的第一条记录。 (4).查询集合中的所有内容。 3.删除文档 (1).使用命令删除集合中姓名为赵四的文档。 (2).删除集合中所有文档。 4.更新数据库 (1)数据准备,新建user集合并插入以下内容: (2)将users集合中姓名为方世玉的名字修改为洪七公,college改为安理工。 (3)将年龄为32岁的所有记录的college改为清华大学。 (4)将姓名为赵敏的年龄更新为28岁。 5、使用mongodb的聚合管道完成下列操作(XXX是用自己的名字命名集合): (1)考虑以下文档结构存储用户的文章,文档存储了用户的 user_name 和文章的 status 字段: >db.XXX.insert({ "post_text": "纸上得来终觉浅,绝知此事要躬行。", "user_name": "Jerry", "status":"active" }) >db.XXX.insert({ "post_text": "读书不觉已春深,一寸光阴一寸金。", "user_name": "Jerry", "status":"active" }) >db.XXX.insert({ "post_text": "天生我材必有用,千金散尽还复来。", "user_name": "Jerry", "status":"active" }) >db.XXX.insert({ "post_text": "世上无难事,只怕不专心。", "user_name": "Jerry", "status":"active" }) >db.XXX.insert({ "post_text": "穷则独善其身,达则兼济天下。", "user_name": "Jerry", "status":"disabled" }) >db.XXX.insert({ "post_text": "博学之,审问之,慎思之,明辨之,笃行之。", "user_name": "Tom", "status":"disabled" }) >db.XXX.insert({ "post_text": "路漫漫其修远兮,吾将上下而求索。", "user_name": "Tom", "status":"disabled" }) >db.XXX.insert({ "post_text": "夫君子之行,静以修身,俭以养德。", "user_name": "Tom", "status":"active" }) (2)在XXX集合中使用 管道操作符来选取已发布的文章(status:“active”),并通过user_name分组,计算每个用户的文章数。 (3)使用 find 操作符来查看 mapReduce 的查询结果。 6、使用管道操作符完成下列操作: (1)建立文档: 订单表: db.order.insert({"order_id":"1","uid":10,"trade_no":"111","all_price":100,"all_num":2}) db.order.insert({"order_id":"2","uid":7,"trade_no":"222","all_price":90,"all_num":2}) db.order.insert({"order_id":"3","uid":9,"trade_no":"333","all_price":20,"all_num":6}) 订单商品表: db.order_item.insert({"order_id":"1","title":"商品鼠标1","price":50,num:1}) db.order_item.insert({"order_id":"1","title":"商品键盘 2","price":50,num:1}) db.order_item.insert({"order_id":"1","title":"商品键盘 3","price":0,num:1}) db.order_item.insert({"order_id":"2","title":"牛奶","price":50,num:1}) db.order_item.insert({"order_id":"2","title":"酸奶","price":40,num:1}) db.order_item.insert({"order_id":"3","title":"矿泉水","price":2,num:5}) db.order_item.insert({"order_id":"3","title":"毛巾","price":10,num:1}) (2)要求查找集合order中的数据,只返回文档中trade_no和all_price字段。 (3)要求查找集合order中的数据,只返回文档中trade_no和all_price字段,且过滤掉all_price小于90的数据。 (4)统计每个订单下的商品总数量,按照订单号分组。 (5)要求查找集合order中的数据,只返回文档中trade_no和all_price字段,且过滤掉all_price小于90的数据,最后按照all_price进行降序排序,返回第一条数据

2025-03-09 上传