集合
重点:ArrayList HashMap
组(容器)
容器理解:
可以在其中放置对象或基本类型数据
基本特点:可固定长度,储存的类型一致,还可以保存基本数据类型和引用数据类型。
优势:是一种简单的线性序列,可以快速地访问数组元素,效率高。
当然优势好劣势也是比较明显的:不灵活,用之前还需要提前定义好容器的大小而且还不能随着要求的变化而改变或着是不能扩容
例如:
需要做一个人员管理系统在人员未知的情况下数组的缺点就尤为明显了,因此这里我们就不能使用数组了,新知识集合就出现了
新容器叫集合 (Collection 顶级接口)
什么是集合:
集合是一种大小(存储数据多少)可变,
(只能存储引用数据类型)类型不固定,
适合增删操作的一种存储数据的" 容器 "
集合的使用场景 一般用于注册账号,或者获取数据的集合;
了解一下集合的特点
1.集合是提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变
2. 集合的大小不固定,启动后可以动态变化,类型也可以选择不固定(非基本数据类型)
3.集合非常适合做元素的增删操作
因此在遇到上述情况的时候我们就有了完美得解方案了
集合元素可以使用steam流进行快速的聚合运算
Collection 顶级接口 有2个子接口
1.list 接口 有顺序 可重复
2.Set 接口 无顺序 不可以重复
父类接口只声明通用的接口;而子接口更加丰富;
List 接口 有顺序输出的时候有顺序;排号一样;
谁先进,谁先出;
List常用的实现类有三个:
ArrayList (重要了解)
LinkedList (了解)
vector (知道即可)
List系列集合:添加的元素是有序、可重复、有索引。
ArrayList、LinekdList :有序、可重复、有索引)
Collection 有几个子接口?分别是什么?分别有什么实现类
并且子接口有什么区别?
2个子接口: List 和 Set
List 的实现类:ArrayList linkedList vector
List :元素有序 数据元素可重复
Set 元素无序 且数据元素不重复;
LinkedList(了解):
LinkedList类是List接口的一个具体实现类
LinkedList 类用于创建链表数据结构
插入或者删除元素时,它提供更好的性能
那么LinkedList底层基于双链表实现的,
查询元素慢,增删首尾元素是非常快的
LinkedList是支持双链表,定位前后的元素是非常快,
增删首尾的元素也是最快的。
所以提供了很多操作首尾元素的特殊API
如果查询多而增删少用ArrayList集合。(用的最多的)
如果查询少而增删首尾较多用LinkedList集合。
测试动手试一试:
新闻管理系统,需求如下
可以存储各类新闻标题(包含ID、名称、创建者)
NewTitle{
id 1.
name 韩国首尔接连出现杀人预告
author 佚名
有参构造器;
new NewTitle(2,关羽吃面条为什么不拌32号混凝土,老登);
new NewTitle(3,你的月亮我的心,曾小贤);
}
ArrayList<NewTitle> title = new ArrayList<>();
可以获取新闻标题的总数 size
可以逐条打印每条新闻标题的名称 foreach
public class Movie {
private String name;
private double score;
private String actor;
public static void main(String[] args) {
// 1、定义一个电影类
// 2、定义一个集合对象存储3部电影对象
Collection<Movie> movies = new ArrayList<>();
movies.add(new Movie("《你好,李焕英》", 9.5, "张小斐,贾玲,沈腾,陈赫"));
movies.add(new Movie("《唐人街探案》", 8.5, "王宝强,刘昊然,美女"));
movies.add(new Movie("《刺杀小说家》",8.6, "雷佳音,杨幂"));
System.out.println(movies);
// 3、遍历集合容器中的每个电影对象
for (Movie movie : movies) {
System.out.println("片名:" + movie.getName());
System.out.println("得分:" + movie.getScore());
System.out.println("主演:" + movie.getActor());
}
}
总结:
1数组和集合各有优点但是数组用处限制比较大,数组和集合的元素存储的个数问题,
2.数组定义后类型确定,长度固定 , 集合类型可以不固定,大小是可变的。
3.数组和集合存储元素不行同以及优缺点。
- 数组可以存储基本类型和引用类型的数据。
- 集合只能存储引用数据类型的数据。
数组和集合适合的场景
- 数组适合做数据个数和类型确定的场景。
- 集合适合做数据个数不确定,且要做增删元素的场景。
4.
Collection List Set
List : 有索引 有序 可重复
ArrayList
add() 增加
set() 修改
remove() 删除
get() 查询
indexof() 返回下标
isEmpty() 集合是否为空
LinkedList
Vector
泛型理解
例如:生产袋子的厂家,
一开始并不知道我们将来会用袋子装什么,
我们什么都可以装,但是有的时候,我们在使用时,
想要限定某个袋子只能用来装什么,这样我们不会装错
,而用的时候也可以放心的使用,
无需再三思量。
我们生活中是在袋子上“贴标签”,
这样就轻松解决了问题。
<T>就是类型参数,即泛型。
在Java中我们在声明方法时,
当在完成方法功能时如果有未知的数据需要参与,
这些未知的数据需要在调用方法时才能确定,
那么我们把这样的数据通过形参表示。
那么在方法体中,
用这个形参名来代表那个未知的数据,
而调用者在调用时,对应的传入值就可以了
增删改查: (T t)
可以增加学员;(Student student)
可以增加商品;(Goods goods)
可以增加账户;(Account account)
可以增加用户...(User user)
初学泛型可以修饰什么?
怎么去使用泛型!
Person<T> 泛型类
private T t; 泛型成员变量;
那么理解了泛型了,应该就知道泛型的好处了
也就是特点:
使用接口时,
如果没有泛型或不指定泛型,
很麻烦,还有安全隐患
有了泛型并使用泛型,那么既能保证安全,
又能简化代码。
在输入框中输入Random
看类在哪个包下
看类的描述
看构造方法
看成员方法
方法名 方法名 说明
public static int abs(int a)
返回参数的绝对值
public static double ceil(double a)
返回大于或等于参数的最小
double 值,等于一个整数
public static double floor(double a)
返回小于或等于参数的最
double 值,等于一个整数
public static int round(float a)
按照四舍五入返回最接近参数的
int
public static int max(int a,int b)
返回两个
int
值中的较大值
public static int min(int a,int b)
返回两个
int
值中的较小值
public static double pow (double a,double b)
返回
a
的
b
次幂的值
public static double random()
返回值为
double
的正值,
[0.0,1.0)
|
方法名
|
说明
|
public static void exit(int status)
|
终止当前运行的
Java
虚拟机,非零表示异常终止
|
public static long currentTimeMillis()
|
返回当前时间
(
以毫秒为单位
)
|
2.5 Objects (应用)
方法名 说明
public static String toString(
对象
)
返回参数中对象的字符串表示形式。
public static String toString(
对象
,
默认字符串
)
返回对象的字符串表示形式。
public static Boolean isNull(
对象
)
判断对象是否为空
public static Boolean nonNull(
对象
)
判断对象是否不为空
|
方法名 说明
BigDecimal(double val)
参数为
double
BigDecimal(String val)
参数为
String
|
方法名
| 说明 |
public BigDecimal add(另一个BigDecimal对象) public BigDecimal subtract (另一个BigDecimal对象) public BigDecimal multiply (另一个BigDecimal对象) public BigDecimal divide (另一个BigDecimal对象) public BigDecimal divide | 加法
减法 乘法 除法 除法 |
方法名 说 明
public Integer(int value)
根据
int
值创建
Integer
对象
(
过时
)
public Integer(String s)
根据
String
值创建
Integer
对象
(
过时
)
public static Integer valueOf(int i)
返回表示指定的
int
值的
Integer
实例
public static Integer valueOf(String s)
返回一个保存指定值的
Integer
对象
String
|
内存圈: