关于写博客这简直,真的要吐槽一下自己,永远都是忘记再忘记,每次公司新来的小伙子们问的问题总是记下来想要写到博客,却总是因为工作一忘再忘.
在这里提醒看到文章的程序员同志们,一定要坚持自己的好习惯,无论是手写笔记还是云笔记,一定要将自己所学的东西归纳整理,形成自己的知识体系,这样用的时候才不会不知从何下手,这也是刚入行或者刚毕业的同行的通病吧.
之前开始写sql的小函数问题是因为公司新来的同时老是遇到解决不了的问题,完了之后就硬干,写一大堆代码,调用一堆表,各种自连接,外连接,这样跑起来不仅慢还占用资源,正确率也无法保证,话说回来,每个程序员写代码都有自己的风格,谁会脑子瓦特去看别人的代码啊,我连自己写的代码都懒得去看第二遍,手动狗头三连.
这两天问题又变了,居然是一些Java基础的集合问题,所以借机会重新归纳一下集合的相关基础应用知识,感兴趣的可以再往深研究去看源码,这里就不过多介绍了
话不多说,上干货
集合概念
集合是用来存储多个类型数据的容器,她的长度是可以变化的(一般的定义都是说存储同一类型的数据,这是指实际开发中,集合的底层实际上支持多种类型数据同时存储,但实际开发中读写不方便)
集合的体系
记忆点:
1.集合的顶层都是**接口**,其中Collection接口是所有*单列集合*的顶层接口,Map接口是所有双列集合的顶层接口
2.Collection接口有两大子体系:
-->list体系:特点是有序,可重复,其中有序指的不是排序,而是写入和读取顺序一致
-->Set体系:特点是无序,唯一,无序定义同上
学习集合密不外传小技巧: ***学顶层,用底层*** 手动狗头三连,这谁不知道 哈哈
## 一 Collection集合---单列集合
**1.如何创建对象**
为什么一直强调接口呢?用屁股想都知道啊,学习接口的时候都知道,接口不能直接通过new关键字来创建对象(杠精们说匿名内部类的你滚,匿名内部类实际上是另一只对接口的实现,可以理解为创建了其子类对象,用于实现接口)
所以一般创建Collection集合所使用的方法是通过其子类对象来创建
代码如下
```java
Collection<String> list = new Arraylist<String>();
解释:
1.集合后边的<数据类型>是泛型的意思, 泛型是用来限定集合中存储元素的数据类型的,
这里的泛型中的数据类型说明该集合只能存储字符串,
2.泛型只能是引用数据类型,且在实际开发中,泛型一般只结合集合来一起使用.
2.需求:
----创建Collection集合对象, 用来存储字符串.
----调用Collection接口的add()方法, 往上述集合中添加3个字符串, 内容如下:
“hello”, “world”, “java”
----通过输出语句, 直接打印集合对象, 并观察结果.
参考代码如下:
public class Demo01 {
public static void main(String[] args) {
//1.创建Collection集合对象, 用来存储字符串.
//Collection<String> coll = new ArrayList<String>();
//JDK1.7以后, 可以简化成: 如下格式
Collection<String> coll = new ArrayList<>();
//2.调用Collection接口的add()方法, 往上述集合中添加3个字符串, 内容如下:"hello", "world", "java"
coll.add("hello");
coll.add("world");
coll.add("java");
//3.通过输出语句, 直接打印集合对象, 并观察结果.
System.out.println("coll: " + coll); //ArrayList类已经重写了Object#toString()方法.
}
}
3.Collection集合的成员方法
常用方法如下:
---- public boolean add(E e) 添加元素.
---- public boolean remove(Object obj) 从集合中移除指定的元素.
----public void clear() 清空集合对象
----public boolean contains(Object obj) 判断集合中是否包含指定的元素
---- public boolean isEmpty() 判断集合是否为空
---- public int size() 获取集合的长度, 即集合中元素的个数
方法的调用就不用说了吧
对象名.方法调用就可以了,这里要注意返回值
4.遍历集合
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
//案例: 演示集合的遍历.
/*
涉及到的方法:
Collection集合中的方法
public Iterator<E> iterator(); 根据集合对象, 获取其对应的迭代器对象.
Iterator迭代器中的方法:
public boolean hasNext(); 判断迭代器中是否有下一个元素.
public E next(); 获取迭代器中的下一个元素.
结论: 总结的集合的使用步骤 记忆
集合的使用分为4大步3小步.
1. 创建集合对象.
2. 创建元素对象.
3. 把元素对象添加到集合对象中.
4. 遍历集合.
4.1 根据集合对象获取其对应的迭代器对象. Collection#iterator();
4.2 判断迭代器中是否有下一个元素. Iterator#hasNext();
4.3 有就获取. Iterator#next();
*/
public class Demo03 {
public static void main(String[] args) {
//1.通过多态的形式, 创建Collection集合对象.
Collection<String> coll = new ArrayList<>();
//2.调用Collection接口的add()方法, 往上述集合中添加3个字符串, 内容如下:"hello", "world", "java"
/*String s1 = "hello";
coll.add(s1);*/
coll.add("hello");
coll.add("world");
coll.add("java");
//3.通过迭代器遍历集合, 获取到每一个元素, 并打印到控制台上.
//3.1 根据集合对象获取其对应的迭代器对象.
//多态
//接口 Iterator接口的子类对象
Iterator<String> it = coll.iterator();
//3.2 判断迭代器中是否有下一个元素.
while (it.hasNext()) {
//3.3 有就获取, 然后输出.
String s = it.next();
System.out.println(s);
}
}
}
5.集合的使用步骤总结
集合的步骤可以分为四大步三小步, 具体如下:
- 创建集合对象.
- 创建元素对象.
- 把元素添加到集合中.
- 遍历集合
4.1.根据集合对象获取其对应的迭代器对象.
通过Collection#iterator()方法实现.
4.2.判断迭代器中是否有下一个元素.
通过Iterator#hasNext()方法实现.
4.3.如果有, 就获取该元素.
通过Iterator#next()方法实现.
6.附送理解性辅助需求
6.1 定义一个学生类, 属性为姓名和年龄.
6.2 创建Collection集合, 用来存储学生对象.
6.3往Collection集合中, 添加3个学生的信息.
6.4通过迭代器, 遍历集合.
参考代码:
public class Demo04 {
public static void main(String[] args) {
//1. 创建集合对象.
Collection<Student> coll = new ArrayList<>();
//2. 创建元素对象.
Student s1 = new Student("刘亦菲", 33);
Student s2 = new Student("赵丽颖", 31);
Student s3 = new Student("高圆圆", 35);
//Student s4 = new Student("丹丹", 18);
//3. 把元素对象添加到集合对象中.
coll.add(s1);
coll.add(s2);
coll.add(s3);
//coll.add(s4);
//4. 遍历集合.
//4.1 根据集合对象获取其对应的迭代器对象. Collection#iterator();
Iterator<Student> it = coll.iterator();
//4.2 判断迭代器中是否有下一个元素. Iterator#hasNext();
while (it.hasNext()) {
//4.3 有就获取. Iterator#next();
Student stu = it.next();
System.out.println(stu);
//不能写成如下的形式, 因为next()方法调用一次, 就会获取一个值.
//下边这个代码就属于: 判断一次, 获取两个值.
//System.out.println(it.next().getName() + "..." + it.next().getAge());
}
}
}
下篇文章讲Collection下的List集合及其特有的成员方法
同志们栽未!