心得:
我是一名正在自学的java的即将毕业的大学生
总结笔记是为了让自己更好的理解和加深印象。可能不是那么美观,自己可以看懂就好
所有的文档和源代码都开源在GitHub: https://github.com/kun213/DailyCode上了。希望我们可以一起加油,一起学习,一起交流。
day06【集合】
今日学习内容-2020.9.23-9.25
对象数组
**概念:**数组是容器,即可以存储基本数据类型也可以存储引用数据类,存储了引用数据类型的数组称为对象数组
Collection集合
List
的特点是元素有序、元素可重复。Set
的特点是元素不可重复。
List
接口的主要实现类有java.util.ArrayList
和java.util.LinkedList
Set
接口的主要实现类有java.util.HashSet
和java.util.LinkedHashSet
。
1、说出集合与数组的区别
数组和集合的相同点和不同点:
相同: 容器,存储数据
不同: 数组的长度是固定的。集合的长度是可变的。
不同: 数组可以存基本类型,引用类型
集合只能存储引用类型,不存储基本类型,如果想存储基本类型数据需要存储对应的包装类型。
记住: 数据多了存储数组,对象多了存储集合
数组的弊端
- 数组长度是固定的,一旦创建不可修改。
- 需要添加元素,只能创建新的数组,将原数组中的元素进行复制。
2、使用Collection集合的常用功能
Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。方法如下:
public boolean add(E e)
: 把给定的对象添加到当前集合中 。public boolean addAll(Collection<? extends E>)
将另一个集合元素添加到当前集合中。public void clear()
:清空集合中所有的元素。public boolean remove(E e)
: 把给定的对象在当前集合中删除。public boolean contains(Object obj)
: 判断当前集合中是否包含给定的对象。public boolean isEmpty()
: 判断当前集合是否为空。public int size()
: 返回集合中元素的个数。public Object[] toArray()
: 把集合中的元素,存储到数组中。
迭代器(Iterator接口)
1、使用迭代器(Iterator)对集合进行取元素
public class IteratorDemo {
public static void main(String[] args) {
/**
* 迭代器遍历集合
* 步骤:
* 1: 集合对象调用方法 iterator()获取迭代器接口Iterator对象
* 获取的是接口实现类对象
*
* 2: Iterator对象调用方法hasNext()
* 判断集合中是否有下一个元素,有返回true
*
* 3: Iterator对象调用方法next()
* 取出下一个元素
*/
Collection<String> coll = new ArrayList<String>();
coll.add("i");
coll.add("love");
coll.add("java");
//1: 集合对象调用方法 iterator()获取迭代器接口Iterator对象
Iterator<String> it = coll.iterator();
//2: Iterator对象调用方法hasNext()
//使用while循环,条件是集合中有下一个元素
while (it.hasNext()){
// 3: Iterator对象调用方法next()
String s = it.next();
System.out.println(s);
itn o:
}
}
数据结构
1、说出常见的数据结构
数据存储的常用结构有:栈、队列、数组、链表和红黑树
栈
采用栈结构的集合,对元素的存取有如下的特点
-
先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)。例如,子弹压进弹夹,先压进去的子弹在下面,后压进去的子弹在上面,当开枪时,先弹出上面的子弹,然后才能弹出下面的子弹。
-
栈的入口、出口的都是栈的顶端位置
这里两个名词需要注意:
- 压栈:就是存元素。即,把元素存储到栈的顶端位置,栈中已有元素依次向栈底方向移动一个位置。
- 弹栈:就是取元素。即,把栈的顶端位置元素取出,栈中已有元素依次向栈顶方向移动一个位置。
队列
,采用队列结构的集合,对元素的存取有如下的特点:
-
先进先出(即,存进去的元素,要在后它前面的元素依次取出后,才能取出该元素)。例如,小火车过山洞,车头先进去,车尾后进去;车头先出来,车尾后出来。
-
队列的入口、出口各占一侧。例如,下图中的左侧为入口,右侧为出口。
2、说出数组结构特点
采用该结构的集合,对元素的存取有如下的特点:
- 查找元素快:通过索引,可以快速访问指定位置的元素。
- 增删元素慢
3、说出单向链表结构特点
采用单向链表结构的集合,对元素的存取有如下的特点:
- 多个结点之间,通过地址进行连接。例如,多个人手拉手,每个人使用自己的右手拉住下个人的左手,依次类推,这样多个人就连在一起了。
- 查找元素慢:想查找某个元素,需要通过连接的节点,依次向后查找指定元素
- 增删元素快:
List集合
1、使用集合存储自定义类型
/**
* List接口实现类ArrayList集合
* ArrayList: 有序,索引,重复
* ArrayList集合:
* 底层实现是数组
* 查询速度快,增删速度慢
* 此集合是线程不安全集合,运行的速度快
*/
public class ArrayListDemo {
public static void main(String[] args){
List<Person> list = new ArrayList<Person>();
list.add(new Person("张三",15));
list.add(new Person("李四",22));
//迭代器
Iterator<Person> it = list.iterator();
while (it.hasNext()){
Person next = it.next();
System.out.println(next);
}
System.out.println("-----------------");
//for循环遍历
for (int i = 0; i < list.size(); i++) {
Person person = list.get(i);
System.out.println(person);
}
System.out.println("--------------");
//加强for循环遍历
for (Person p : list){
System.out.println(p);
}
}
}
2、说出List集合特点
- List集合是有序的集合,存储和取出的顺序一致。
- List集合允许存储重复的元素。
- List集合中的每个元素具有索引。
**提示:**集合类名后缀是List,例如ArrayList,LinkedList等,都是List接口实现类,都具有List接口的特点。
这是我的公众号,希望大家可以关注,让我们一起做最好的自我。
我也会把我自学视频分享在上面,供大家一起学习。