今天我学习了张老师讲的集合类视频;做了一些简单的记录
集合类:在面向对象的编程思想中,都是以对象的形式对事物进行描述的,为了保证在对象的生命周期,我们需要持有对象,在很多情况下,我们不知道在程序中需要创建多少个对象,这时就不能依靠定义引用对象的变量来持有每一个对象,
存储对象的容器就能帮我们解决这样的问题,而集合便是这样的容器。
数组和集合类的区别:数组和集合类都是容器,都能存储对象,集合类的优势就在于长度可变。
集合类的特点:
1. 集合类可用于存储对象
2. 集合类的长度可变
3. 一个集合类可以存储多种类型的对象
集合元素的存取:
1. LIST集合元素存取方法一致
2. 使用add()方法增加元素
3. 由于List集合有序,可以使用get()方法获取元素
4. 元素的迭代(Iterator)
l 通过集合对象的Iterator()方法获得迭代器Iterator
l 通过Iterator迭代器的hasNext()方法判断是否存在写一个元素
l 通过Iterator迭代器的next()方法获取下一个元素
例如:
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListTest
{
//@SuppressWarnings("unchecked") //注解
public static void main(String args[])
{
ArrayList<Person> al = new ArrayList<Person>();
al.add(new Person("zhangsan",19));
al.add(new Person("wangwu",21));
al.add(new Person("liuying",28));
al.add(new Person("zhangsan",19));
Iterator<Person> iter = al.iterator();
while(iter.hasNext())
{
Person p = iter.next();
System.out.println(p);
}
}
}
5. 元素的迭代(Enumeration)
l 迭代Vector集合中的元素可以使用Enumeration
l 通过Enumeration的hasNextElements()方法判断是否还有元素
l 通过Enumeration的nextElment()方法返回写一个元素
ArrayList、Vector和LinkedList三者的区别
ArrayList、Vector和LinkedList都是Collection集合分支下List接口的实现类,共同点:元素有序,允许有重复元素
ArrayList、Vector底层都是数组实现,这样的实现注定查找元素速度快,增删慢,两者的区别就在于线程安全问题
ArrayList不支持线程同步,所以不安全。Vector线程同步,线程安全
LinkedList集合底层是链表实现,这样的实现查找慢,增删快。
Set集合,元素无序,不允许有重复元素,通过对象的equals方法保证元素的不重复
HashSet:通过哈希算法保证元素的不重复
先调用对象的hashCode方法计算出对象的哈希值,找到位置
如果该位置没有元素,直接存
如果有,将存入的对象分别和已有的对象进行equals比较(调用对象的equals方法)
往HashSet集合中存放的对象必须要正确地重写Object类的equals和hashCode方法
今天学的东西就是这些了,希望明天有更好的状态学习!