Java集合
容器
1.数组
2. String, StringBuilder, StringBuffer(2010面试题)
3. List, Map
IOC 容器的背后就是Map
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8f3f2b9f269ac5931dacb82c13f3afbe.png#pic_center)
int arr[] = new int[5];
int aa[] = new int[arr.length + 1];
arr[0] = 1;
arr[1] = 2;
arr[2] = 4;
arr[3] = 5;
arr[4] = 6;
int idx = -1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 3) {
idx = i;
break;
}
}
for (int i = 0; i < idx; i++) {
aa[i] = arr[i];
}
for (int i = aa.length - 1; i > idx; i--) {
aa[i] = arr[i - 1];
}
aa[idx] = 3;
for(int i=idx;i< arr.length;i++){
aa[i+1]=arr[i];
}
aa[idx]=3;
for (int i = 0; i < aa.length; i++) {
System.out.println(aa[i]);
}
数组的练习
1. 找 最大数
2. 找 最小数
3. 找出最大数的前 2 个, 或 前 3 个
4. 求平均值
5. 删除一个元素
6. 添加一个元素
7. 去重
8. 冒泡排序
9. 数组的二分查找(折半查找) **提高,难度蛮高**
把 人脑当电脑使用: 用你的脑袋去执行自己写的代码
用你的脑袋去执行别人写的代码
代码不是用眼睛看懂
集合的List
集合就是容器的意思
List 会取代数组
List 是一个接口,有两个实现类
ArrayList(基于数组实现的)
(添加,查询)
LinkedList(基于链表实现,自行车链条,数据结构单向链表和双向链表)
(插入,删除,速度快)
ArrayList
1.定义List变量一般用向上转型方式定义
List list = new ArrayList();
因为 Object 是所有类的祖宗,所以我们添加任意类型的数据
1.add(Object e)
导致我们添加的数组全部被向上转型到Object
2.Object obj = get(index)
返回值Object,因为add添加时候已经向上转型成Object
index 就是下标(Object[] 的下标)
3.remove(index)删除指定下标的元素
4.size()等同于数组的长度 .length
List遍历方法
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
for (Object e:list) {
System.out.println(e);
}
小结
List 动态Object 类型的数组,它的长度,size()方法
添加add从下标0开始
获取get(下标)得到Object
装箱拆箱
List list = new ArrayList<>();
Object a;
a="chen";
a=1;
list.add(1);
list.add(101);
list.add(202);
list.add("张三");
list.add(new Student());
int x = (Integer)list.get(2);
String s = (String)list.get(2);
基本数据类型 ——》 对应包装类
boolean -> Boolena
int -> Integer
double -> Double
float -> Float
byte -> Byte
char -> Charater
short -> Short
Long -> Long
泛型,帮你解决向下转型问题,帮助完成强转。
(编译后擦除)泛型只在Java源程序到字节码文件产生前作用。
(字节码文件没有泛型)
List<String> list = new ArrayList<>();
list.add("100");
String s = list.get(0);
Java List综合练习
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e39aa849a14600faa696694153441a54.png#pic_center)
综合练习
建包
entity ——》 实体类和数据库的表对应
dao ——》 访问的数据库的类(Data access Object)数据访问层
Demo ——》 显示,输入