字符串没数据: 字符串 null || 字符串.trim().equals(“”)
字符串有数据: 字符串!=null && !字符串.trim().equals(“”)
数组/集合没数据: 数组/集合 null || 数组/集合的长度=0
数组/集合有数据: 数组/集合!=null && 数组/集合的长度>0
增删改查:
集合: add / remove / set / get
Map集合: put / remove / put / get (增和改都是put — 替换掉)
List迭代器: add / remove / set / next
(数组长度固定, 不能增删, 可以用角标获取和修改元素)
遍历方式的选择:
遍历并操作数组—用普通for
循环次数不确定—while(true) { if判断—break结束循环 }
List集合要遍历并增删改时—用List迭代器
遍历文件夹—先将File对象 转为 File数组, 在用增强for遍历数组
(变量就是该文件夹下的文件/文件夹)
只遍历, 不增删改
数组—用增强for
单列集合—用方法引用: 集合名.forEach(System.out :: println)
双列集合(map / prop)—用Lambda()
集合名.forEach((key,value)->System.out.println(key+"="+value));
注意: 向集合中添加有规律的数值时, 用普通for更方便
双列集合的增删改要单独操作, 操作完毕, 在用Lambda遍历
集合的选择:
- 元素可重复—用List体系
要执行大量增删操作—用LinkedList (否则都用ArrayList) - 元素不可重复, 没有对应关系—用Set体系
要求存取顺序一致—用LinkedHashSet (否则都用HashSet) - 元素不可重复, 有对应关系—用Map体系
要求存取顺序一致—用LinkedHashMap (否则都用HashMap)
List集合特点: 有序, 有索引, 元素可以重复
Set/Map集合特点: 无序, 无索引, 元素不能重复
(若元素有重复—对象类要重写equals和hashcode方法)
List集合有元素, 要求去重: 创建HashSet集合, 复制集合, 清空原集合, 再次复制集合
List集合没元素, 向里面存数据(要求元素不可重复):
先创建个HashSet集合, 将数据存里面, 在复制集合
特: 将数组中的元素存到List集合(要求元素不可重复):
用增强for遍历数组, contains判断, 存在—continue跳过 不存在—list.add()
创建集合 元素是对象时:
单列集合, 要先创建对象, 在Collections.addAl() 一次性添加所有元素
Map集合, 添加键值对 用匿名对象 (代码简单, 阅读性更好)
创建集合—从左边开始写, 不要快速生成, 反而更慢
集合长度要求明确的, 循环条件用while(list.size() < number) , 不要用whie(true)
数组的角标值可以再”=”的左边
集合和字符串的角标值 不能再”=”左边
字符串集合: 遍历得元素—字符串, 字符串在遍历得字符
所以 字符串集合: 要操作字符的话, 要用for嵌套
想要集合中部分符合要求的元素
如果原集合后续不用了—遍历, 判断, 删除不符合的元素
如果原集合后续还要用—另外创建个集合, 遍历原集合, 判断, 符合的add添加到新集合
数组与集合的区别:
数组要指定类型和长度, 集合只要指定类型即可
数组可以存储基本类型和引用类型, 集合只能存储引用类型
打印数组: 直接打印显示的是地址值
带框效果—用Arrays.toString(数组名)
裸字符效果—用new String(数组名) ----仅字节/字符数组可以打印裸字符效果
打印集合内容: 直接打印集合名即可—带框效果
打印对象的属性: 直接打印对象名即可
打印流对象内容: 要调用forEach(Lambda)方法 (直接打印流对象显示的是地址)
如果只要输出集合内容, 不用遍历, 直接打印集合名即可
将可变字符串转为固定字符串: return sb.toString()
集合转数组: Object[ ] arr = 集合名.toArray() (可变参就是数组)
数组转集合: 先创建集合, 在用增强for遍历数组, 循环体list.add(变量)
字符串与数组可以互转—toCharArray(str) / Arrays.toString(arr)
数组与集合可以互转—增强for遍历 + list.add() / list.toArray()
即: 字符串和集合可以互转
要操作角标值的字符串, 一般用toCharArray()转成字符数组,在遍历, ok后, 在转回成字符串
数组长度–length 字符串长度–length() 集合长度–size()
(注意: 数组的长度是属性, 不是方法 没有括号)
数组角标值—arr[ i ] 集合角标值—list.get( i ) 字符串角标值—str.charAt( i )
输出角标值—直接打印 操作角标值—要先定义变量存储角标值
复制集合—集合1.addAll(集合2)
复制数组— System.arraycopy(原数组, 复制起点, 目标数组, 目标数组起点, 复制个数)