传智播客——java学习7--集合类

今天我学习了张老师讲的集合类视频;做了一些简单的记录

 

集合类:在面向对象的编程思想中,都是以对象的形式对事物进行描述的,为了保证在对象的生命周期,我们需要持有对象,在很多情况下,我们不知道在程序中需要创建多少个对象,这时就不能依靠定义引用对象的变量来持有每一个对象,

      存储对象的容器就能帮我们解决这样的问题,而集合便是这样的容器。

       数组和集合类的区别:数组和集合类都是容器,都能存储对象,集合类的优势就在于长度可变。

       集合类的特点:

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方法

 

 

              今天学的东西就是这些了,希望明天有更好的状态学习!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值