声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂 旨在促进VIP学员互相学习的基础上公开笔记。
集合框架
1.枚举
枚举也是在JDK1.5以后才出现的,泛型主要解决的是说明一个集合里面存储的是什么类型的对象的。那枚举是用来干啥的呢?
枚举在java中是专门用来做选择的。先建好maven环境:
配置好的环境如上,我们回想一下Calendar类下的get方法,它的参数是int field,其实本意是要我们传入年、月、日、时、分、秒这些参数从而来得到对应的值的,但是它的参数的变量名field并没有描述清楚这个参数到底该传什么样的值的,像这种整形的参数变量,描述含义不清楚的(不是weight、height、length之类的含义清晰的变量),我们不知道该传入什么样的参数值的时候,通常可以通过看这个类中定义了哪些常量,然后把类中定义的常量(常量标示符表示某个int数值)作为参数值传入,比如这里的get方法,就可以传入Calendar.YEAR这样的常量值,来得到年份。
但是最开始的时候我们并不知道这种int field的参数就应该传入类中定义的常量标示符的,那么java中就推出了枚举来解决这个问题。
枚举是一个选择器,比如你的方法的参数类型要限定在A/B/C/D/E/F这六个对象之间,你就可以定义一个枚举选择器Type,把A/B/C/D/E/F六个对象写进来,然后在方法中的参数写成Type t,当使用方法的时候,一点到t上面就会知道这个参数是一个枚举,同时知道了参数类型是在什么之间做选择。如下:
如上,使用枚举你就能很清楚的知道该传入的参数在哪些对象之间做选择,相反你如果写int,同时变量名的表义又不清楚的话,是无法知道该传入什么样的参数值的。
那么我们方法的参数是枚举的方法,我们就可以在方法里面做一些选择的逻辑处理:
枚举里面既可以写构造器也可以写方法,构造器必须是私有的,但是在枚举里面写构造器和方法都是没有实际意义的:
补充一个泛型的循环:
这里的for-each循环实际上也就是迭代器做出来的。 Collections集合工具类:
认识一下JDK API?
什么是API,就是java里面所有官方公布的操作类,和这些类里面的方法,和一些简单的小案例,是一个帮助、说明文档。
网上在线中文API ,百度输入 JDK API
通常情况下拿API 来是为了看某个操作类下的一些方法,看它们是怎么使用的,用来完成什么样的功能的。
Collections集合工具类:
Collections集合工具类里面的方法大部分都是针对List集合进行相应功能操作的:
1.混合打乱Collections.shuffle(List l);
这种打乱方法,每次运行产生的结果都是不一样的。 排序方法Collections.sort(List l):
其实,上面的String为啥能够直接进行排序,是有原因的,那是因为String里面实现了Comparable接口里面的CompareTo方法,所以才能够直接进行排序,我们自己定义一个student类,看看能否直接排序?
我们自己写的类Student,最开始没有实现Comparable接口,在使用sort方法来比较不同的student对象的时候会报错,这是肯定的,因为你没有实现Comparable的接口,它不知道按照什么东西来进行比较,然后我们去实现Comparable接口:
如上所示,我们的student类实现了Comparable接口后,重写了compareTo方法,然后就可以使用sort方法来进行直接排序了。
Collections.addAll批量的加入数据:
Collections.replaceAll()替换集合里面的数据:
Collections.binarySearch()搜索对象在哪个下标下:
Collections.reverse()反转,将集合里面的对象反转过来:
Collections.fill()全部替换,将集合里面的对象全部替换为某个对象:
Collections.copy()拷贝,将一个集合的数据拷贝到另一个集合中,目标集合的长度至少要比源集合的长度长,不然会报错。如果源集合长度比目标集合长度短,则源集合里面的数据会覆盖目标集合里面前面部分的数据:
还有很多方法,以后要用的时候可以参考JDK API文档进行查询。
Map集合:双列集合,一个主键一个值。又称之为键值对集合,一个key 一个value。
键值对集合,键不可以重复,值可以重复,因为我们的拿值、查值、删值都是根据主键来进行的,如果你两个或多个主键相同的话,就无法进行拿值、查值、删值等操作了。
Map集合的结构:下面有HashMap和Hashtable两个集合,Map集合里面的主要方法如上: HashMap集合继承于AbstractMap,然后AbstractMap实现了Map接口。 HashMap是非线程安全的,Hashtable是线程安全的。
HashMap的方法和Hashtable的方法是几乎一样的,只要看看HashMap里面的方法:
由上所示,当多个主键一样的时候,你去拿值的话,拿的是最后一个。
Hashtable的主键和值都不能是null。
而HashMap的主键或者值都可以是null。
拿出集合中的所有值,用到方法values(),返回值是一个Collection集合对象,然后用for-each循环把Collection集合里面的【学Java,到凯哥学堂kaige123.com】所有数据拿出来,这里如果是HashMap集合的话,拿出来的数据是杂乱无序的,而如果是Hashtable的话,拿出来的数据是有顺序的:
取出集合里面所有的键,用方法keySet(),这个方法的返回值是Set集合对象,然后使用for-each循环把Set集合里面的所有数据都取出来。
如上显示,用HashMap的话取出来的键是杂乱无序的,而Hashtable取出来的键是有序的。 键-值一起拿方法entrySet(),它的返回值是一个Set,Set集合里面存放的是Entry<String,String>实体,然后用for-each循环把集合里面所有的实体对象数据Entry<String,String>拿出来:
如上所示,HashMap拿出的键-值对无序,而Hashtable拿出来的有序。
还有size()、remove()、containsKey()、containsValue()、clear()等方法,使用如上。
相关推荐
源码中还包含了一些辅助类,如`InotifyBuffer`用于管理与内核交互的数据缓冲区,`InotifyFlags`枚举类型列出了所有可能的inotify事件标志,以及一些测试用例帮助验证库的功能。 总的来说,`inotify-java-2.1`源码...
本篇文章将深入探讨Java枚举的特性、用法以及如何在实际开发中充分利用它们。 一、枚举的基本用法 1. 声明枚举类型: ```java public enum Color { RED, GREEN, BLUE } ``` 在这里,`Color`是枚举类型,`RED`, `...
1. **定义数据结构**:在.proto文件中,使用protobuf语法定义数据结构,包括消息类型、字段、枚举等。 2. **编译.proto文件**:使用protoc.exe对.proto文件进行编译,指定目标语言为Java,这将生成对应的Java源代码...
2. **类型系统**:支持定义GraphQL对象类型、接口、联合类型、枚举、输入对象和基本类型。这允许开发者构建复杂的API数据模型。 3. **执行引擎**:处理查询,包括字段解析、数据获取、错误处理等,提供强大的查询...
计算机后端-Java-Java核心基础-第23章 枚举类与注解 05. 自定义枚举类.avi
Java 第二阶段建立编程思想 【枚举和注解】---- 代码 Java 第二阶段建立编程思想 【枚举和注解】---- 代码 Java 第二阶段建立编程思想 【枚举和注解】---- 代码 Java 第二阶段建立编程思想 【枚举和注解】---- 代码 ...
计算机后端-Java-Java核心基础-第23章 枚举类与注解 04. 枚举类的理解.avi
计算机后端-Java-Java核心基础-第23章 枚举类与注解 06. 使用enum关键字定义枚举类.avi
计算机后端-Java-Java核心基础-第23章 枚举类与注解 03. 复习:Java比较器等.avi
计算机后端-Java-Java核心基础-第23章 枚举类与注解 08. 使用enum关键字定义的枚举类实
2. **字符串in switch**:允许在switch语句中直接使用字符串,使得处理枚举类型或常量更加灵活。 3. **钻石操作符**:对于泛型实例化,可以省略类型参数的显式指定,如`new ArrayList()`。 4. **文件API增强**:...
Java ---- enum --- 枚举类案例
计算机后端-Java-Java核心基础-第23章 枚举类与注解 13. 如何自定义注解.avi
计算机后端-Java-Java核心基础-第23章 枚举类与注解 01. 每天一考.avi
计算机后端-Java-Java核心基础-第23章 枚举类与注解 10. 注解的理解.avi
《FCKeditor Java版2.4.1对JDK 1.4的兼容性改造详解》 FCKeditor是一款流行的开源在线文本编辑器,广泛应用于Web应用中的富文本编辑功能。其Java版本(FCKeditor-java)使得开发者可以将这款编辑器无缝集成到Java...
计算机后端-Java-Java核心基础-第23章 枚举类与注解 11. Annotation的使用示例.avi
计算机后端-Java-Java核心基础-第23章 枚举类与注解 02. 复习:日期时间API.avi
标题中的"protobuf-java-3.5.1.jar"是一个Java版本的Protocol Buffers库,用于处理Google的Protocol Buffers(简称protobuf)数据格式。protobuf是一种轻量级、高效的结构化数据序列化机制,广泛应用于跨平台的数据...
计算机后端-Java-Java核心基础-第23章 枚举类与注解 20. 集合框架涉及到的API.avi