condition?a:b ---->其结果是一个值 可以使用一个变量进行接收
简写的if-else
//代码
int a=10;
int b=20;
int c=0;
if(a>b){
//省略代码
c=a;
}else{
//省略代码
c=b;
}
如果这一段代码可以拥有一个返回值的话,那么,就可以简写成为三元运算
a>b?: xxxx
int c=a>b?a:b
为什么要有集合
c语言, 数组,类型单一,长度是固定的
集合:类型随意,长度不固定
容器类的任何操作:
CRUD
我们学习集合的一条简单的线路就是使用集合进行CRUD,看顶层,用底层
/******************************************************************
Collection中常用的方法:
collection中能不能添加null,会不会重复?
可以添加null,不会重复
collection中contains方法:
更确切地讲,当且仅当此 collection 至少包含一个满足 (onull ? enull : o.equals(e)) 的元素 e 时,返回 true。
移除元素的问题:
首先第一步还是检查集合中是否有此元素,有才能移除,没有就不能移除—>重写元素的hashcode和equals方法
/**********************************************************************
ArrayList 是一个可变数组的实现,可以包含null
在添加元素的时候复杂度是O(n),其他所有操作都以线性时间运行(O(1)):添加元素的时候比较低效的,但是在其他操作元素上还是比较高效的
特点:
有序可重复
有序性:
存入和取出的顺序是一致
作业:
将list集合中的元素去重---->indexof lastIndextOf contains
最大容量是:
MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
/************************************************************************
LinkedList:
栈:先进后出
队列:先进先出
/**********************************************************************
迭代器是java中出现的一个专门用来遍历集合的类,但是这个类不能new,只能有被迭代的集合进行实例化
细节:
1.未调用it.next()之前,直接调用it.remove()是不合法的
2.it.next()方法会将迭代器的指针往下移动一个
3.在集合迭代过程中,不允许对集合记性迭代器意外的操作,因为这样有可能引发并发修改的异常
/************************************************************************
set:
特点:无序的,不重复
/**********************************************************************
treeSet:
特点:无序的,不重复,排序(自然顺序)
使用treeSet存储元素,需要对元素进行排序,有两种方式:
方式1:
元素具备比较性
元素实现Comparable接口,实现compareTo方法,只需要返回三个数学值就行,-1 ,0 ,1
a.compareTo(b) ---->-1 a<b
a.compareTo(b) ---->0 a = b
a.compareTo(b) ---->1 a > b
方式2:
集合具备比较性,要求自己实现比较器接口,使用treeSet的时候,将比较作为构造参数传入即可