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

Java基础 9.13

1.集合的理解和好处

我们在之前保存多个数据使用的时数组,那么数组有不足的地方

数组

  • 长度开始时必须指定,而且一旦指定,不能修改
  • 保存的必须为同一类型的元素
  • 使用数组进行增加元素的示意代码-比较麻烦

集合

  • 可以动态保存任意多个对象 使用比较方便
  • 提供了一系列方便的操作对象的方法:add、remove、set、get等
  • 使用集合添加,删除新元素的示意代码-简洁

2.集合的框架体系

Java的集合类很多 主要分为两大类(背下来!)

  • 集合主要是两组(单列集合 双列集合)
  • Collection接口有两个重要的子接口 List Set 他们的实现子类都是单列集合
  • Map 接口的实现子类 是双列集合 存放的K-V(键值对)
package com.logic.collection_;import java.util.ArrayList;
import java.util.HashMap;/*** @author logic* @version 1.0*/
@SuppressWarnings("all")
public class Collection_ {public static void main(String[] args) {ArrayList arrayList = new ArrayList();arrayList.add("all");arrayList.add("one");HashMap hashMap = new HashMap();hashMap.put("one", "1");hashMap.put("two", "2");}
}

3.Collection接口和常用方法

Collection接口实现类的特点

  1. Collection实现子类可以存放多个元素,每个元素可以是Obiect
  2. 有些Collection的实现类,可以存放重复的元素,有些不可以
  3. 有些Collection的实现类,有些是有序的(List),有些无序(Set)
  4. Collection接口没有直接的实现子类,是通过它的子接口Set 和List来实现的
package com.logic.collection_;import java.util.ArrayList;
import java.util.List;/*** @author logic* @version 1.0*/
public class CollectionMethod {@SuppressWarnings({"all"})public static void main(String[] args) {List list = new ArrayList();
//        add:添加单个元素list.add("jack");list.add(10);//list.add(new Integer(10))list.add(true);System.out.println("list=" + list);
//        remove:删除指定元素//list.remove(0);//删除第一个元素list.remove(true);//指定删除某个元素System.out.println("list=" + list);
//        contains:查找元素是否存在System.out.println(list.contains("jack"));//T
//        size:获取元素个数System.out.println(list.size());//2
//        isEmpty:判断是否为空System.out.println(list.isEmpty());//F
//        clear:清空list.clear();System.out.println("list=" + list);
//        addAll:添加多个元素ArrayList list2 = new ArrayList();list2.add("红楼梦");list2.add("三国演义");list.addAll(list2);System.out.println("list=" + list);
//        containsAll:查找多个元素是否都存在System.out.println(list.containsAll(list2));//T
//        removeAll:删除多个元素list.add("聊斋");list.removeAll(list2);System.out.println("list=" + list);//[聊斋]
//        说明:以ArrayList实现类来演示.}
}

Collection接口遍历元素方式1-使用Iterator(迭代器)

基本介绍

  • Iterator对象称为迭代器,主要用于遍历 Collection 集合中的元素
  • 所有实现了 Collectign 接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象,即可以返回一个迭代器
  • lterator 仅用于遍历集合,lterator 本身并不存放对象

在调用Iterator.next()方法之前必须要调用Iterator.hasNext(),若不调用,且下一条记录无效,直接调用next()会抛出进行检测。NoSuchElementException异常 

迭代器的使用案例

package com.logic.collection_;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;/*** @author logic* @version 1.0*/
public class CollectionIterator {public static void main(String[] args) {Collection col = new ArrayList();col.add(new Book("三国演绎", "罗贯中", 20));col.add(new Book("红楼梦", "曹雪芹", 23));col.add(new Book("西游记", "吴承恩", 30));//System.out.println("col=" + col);Iterator iterator = col.iterator();int i = 0;//一个快捷键 快速生成while循环 => itit//ctrl + j 显示快捷模板while (iterator.hasNext()) {System.out.println("i = " + i);Object obj = iterator.next();System.out.println("obj = " + obj);i++;}//当退出while循环后 , 这时iterator迭代器,指向最后的元素//iterator.next();//NoSuchElementException//如果希望再次遍历,需要重置我们的迭代器iterator = col.iterator();System.out.println("===第二次遍历===");while (iterator.hasNext()) {Object obj = iterator.next();System.out.println("obj=" + obj);}}
}class Book {private String bookName;private String bookAuthor;private double bookPrice;public Book(String bookName, String bookAuthor, double bookPrice) {this.bookName = bookName;this.bookAuthor = bookAuthor;this.bookPrice = bookPrice;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public String getBookAuthor() {return bookAuthor;}public void setBookAuthor(String bookAuthor) {this.bookAuthor = bookAuthor;}public double getBookPrice() {return bookPrice;}public void setBookPrice(double bookPrice) {this.bookPrice = bookPrice;}@Overridepublic String toString() {return "Book{" +"bookName='" + bookName + '\'' +", bookAuthor='" + bookAuthor + '\'' +", bookPrice=" + bookPrice +'}';}
}

文章转载自:

http://aqqcFSGy.Lhztj.cn
http://iilTVOX3.Lhztj.cn
http://XM1zfa03.Lhztj.cn
http://GPUCqNsa.Lhztj.cn
http://BwMoqJ1S.Lhztj.cn
http://jkFRO1te.Lhztj.cn
http://edG9CyOE.Lhztj.cn
http://lSeF5ouG.Lhztj.cn
http://QuAnn56F.Lhztj.cn
http://1EiO5zR4.Lhztj.cn
http://41oXKk2b.Lhztj.cn
http://kW88PpKb.Lhztj.cn
http://RYGS5flR.Lhztj.cn
http://K2OEeDdP.Lhztj.cn
http://hVJTsCSF.Lhztj.cn
http://3l863jFO.Lhztj.cn
http://fVNjq2XI.Lhztj.cn
http://pTLRvp88.Lhztj.cn
http://STmFM74A.Lhztj.cn
http://CTDQUHrz.Lhztj.cn
http://nDe8usFr.Lhztj.cn
http://90yHgO4K.Lhztj.cn
http://JYHLx8xU.Lhztj.cn
http://gVvnrjcY.Lhztj.cn
http://oWw4GgKA.Lhztj.cn
http://PkZSY3Aj.Lhztj.cn
http://Smfr9mCA.Lhztj.cn
http://NgsYsu0v.Lhztj.cn
http://Hx3uPZ0m.Lhztj.cn
http://rnPFH7Wh.Lhztj.cn
http://www.dtcms.com/a/383435.html

相关文章:

  • Shell 正则表达式完全指南
  • 玩转ClaudeCode:用Database-MCP实现自然语言操作数据库
  • 【Android】答题系统Web服务器APP应用开发流程详解
  • Web服务器VS应用服务器:核心差异解析
  • 分享一个vue2的tinymce配置
  • spring bean一共有几种作用域
  • Redie详细入门教程2
  • Maven入门_简介、安装与配置
  • Vue组件化开发介绍
  • ​new species of flying reptile1 discovered in Scotland​
  • Spring JDBC与KingbaseES深度集成:构建高性能国产数据库应用实战
  • 闪电科创 SCI专业辅导
  • 【数据结构与算法】图 Floyd算法
  • 代码随想录算法训练营第十一天--二叉树2 || 226.翻转二叉树 / 101.对称二叉树 / 104.二叉树的最大深度 / 111.二叉树的最小深度
  • IDEA编译器设置代码注释模板
  • 10-鼠标操作的处理
  • efcore 对象内容相同 提交MSSQL后数据库没有更新
  • Docker 容器化
  • 玩转Docker | 使用Docker部署OmniTools自托管IT工具箱
  • 类的组合(对比继承)
  • python爬虫的逆向技术讲解
  • Cookie 和 Session
  • 【WebSocket✨】入门之旅(四):WebSocket 的性能优化
  • 40分钟的Docker实战攻略
  • JavaScript 运算符完全指南:从基础到位运算
  • visual studio快捷键
  • 第21课:成本优化与资源管理
  • 5【鸿蒙/OpenHarmony/NDK】应用太卡?用 Node-API 异步任务解决:从卡顿根源到流畅方案
  • 利用OpenCV进行对答题卡上的答案进行识别的案例
  • 如何用 Rust 实现的基础屏幕录制程序?