JAVA学习线路:day06集合[1]

心得:
我是一名正在自学的java的即将毕业的大学生
总结笔记是为了让自己更好的理解和加深印象。可能不是那么美观,自己可以看懂就好
所有的文档和源代码都开源在GitHub: https://github.com/kun213/DailyCode上了。希望我们可以一起加油,一起学习,一起交流。

day06【集合】

对象数组

**概念:**数组是容器,即可以存储基本数据类型也可以存储引用数据类,存储了引用数据类型的数组称为对象数组

Collection集合

List的特点是元素有序、元素可重复。Set的特点是元素不可重复。

List接口的主要实现类有java.util.ArrayListjava.util.LinkedList

Set接口的主要实现类有java.util.HashSetjava.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接口的特点。


这是我的公众号,希望大家可以关注,让我们一起做最好的自我。
我也会把我自学视频分享在上面,供大家一起学习。

CodeBull

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值