集合(一)

集合

  1. 为什么要集合
    1. JAVA语言是面向对象的,对事物体系都是以对象存在的我们要对多个对象进行储存和操作,用之前的知识我们就只能用数组,而数组有弊端长度是固定的,所以java就提供了我们一个新的容器叫做数组。
  2. 集合的特点
    1. 长度是可变的
    2. 储存数据只能是对象类型的
    3. 可以存储不同数据类型的对象,一般还是存储同一类型的
  3. 数组和集合的区别(面试)
    1. 数组
      1. 长度固定
      2. 可以存储基本数据类型也可以存储对象类型
      3. 存储的都是同一种数据类型的元素
    2. 集合
      1. 长度是可变的
      2. 只能存储对象类型
      3. 可以存储不同数据类型的对象
  4. 集合体系结构:
             
    由于数据结构不同,那么,就会有多种集合存在。
              而这多种集合又有共性的内容,通过不断的向上抽取,
              最终形成了集合的继承体系结构图:


    1. Collection的功能:
              A:添加功能
                   boolean add(Object obj)
              B:删除功能
                   void clear()
                   boolean remove(Object o)
              C:判断功能
                   boolean contains(Object)//集合是否包含指定元素
                   boolean isEmpty()//集合是否为空
              D:长度
                   int size()
              E:迭代器
                   Iterator<E> iterator()

  1. 迭代器:
              集合的一种常用的遍历方式。

              通过集合获取到迭代器对象。
              然后通过hasNext()和next()方法配合使用
  2. 集合操作的常见步骤:
                   创建集合对象
                   创建元素对象
                   把元素对象添加到集合对象中
                   遍历集合
                        通过集合对象获取到迭代器对象
                        通过迭代器对象的hasNext()方法判断是否有元素
                        通过迭代器对象的next()方法返回元素并自动指向下一个元素
      A:用Collection存储字符串并遍历。
              
 <span style="white-space:pre">	</span>Collection  c = new ArrayList();
        c.add("str1");
        c.add("str2");
        c.add("str3");

        Iterator it = c.iterator();
        while(it.hasNext())
        {
           String s = (String)it.next();
           System.out.println(s);
         }



          B:用Collection存储自定义对象并遍历。
               假设学生类已经存在。

               
<span style="white-space:pre">	</span>Collection c = new ArrayList();

        Student stu1 = new Student("张三",29);
        Student stu2 = new Student("李四",28);

        c.add(stu1);
        c.add(stu2);

        Iterator it = c.iterator();
        while(it.hasNext())
        {
           Student s = (Student)it.next();
           System.out.println(s.getName()+"***"+s.getAge());
         }


     8.List接口的特有功能:(自己补齐)
          A:在指定位置添加元素
               void add(int index,Object obj)
          B:删除指定位置的元素
               Objct remove(int index)
          C:修改指定位置的元素
               Object set(int index,Object obj)
          D:获取指定位置的元素
               Object get(int inde)
           E:列表迭代器

     9.List案例:掌握(自己补齐)
          A:存储字符串并遍历

import java.util.*;
class  ListTest
{
     public static void main(String[] args) 
     {
          Collection c = new ArrayList();
          
          //存放数据
          c.add("Hello");
          c.add("world");
          c.add("java");

          Iterator it = c.iterator();
          //遍历集合
          while(it.hasNext()){
               String s = (String)it.next();
               System.out.println(s);
          }
     }
}



          B:存储自定义对象并遍历。
               假设Person类型已经存在。
               Person(name,age)

import java.util.*;
class PersonTest 
{
     public static void main(String[] args) 
     {
          List list = new ArrayList();

          Person p1 = new Person("zhangsan",28);
          Person p2 = new Person("lisi",29);
          Person p3 = new Person("wangwu",30);

          list.add(p1);
          list.add(p2);
          list.add(p3);

          //方法一  while遍历
          Iterator it = list.iterator();
          while(it.hasNext()){
               Person p = (Person)it.next();
               System.out.println(p.getName()+"-----------"+p.getAge());
          }

          System.out.println("**********************************************");
          
          //方法二   一般for循环表示 
          Iterator it2 = list.iterator();
          for(int i = 0;i<list.size();i++){
               Person p = (Person)it2.next();
               System.out.println(p.getName()+"-------------"+p.getAge());
          }

     }
}


     10.并发修改异常(面试题)
          异常是什么?见到过吗?怎么解决?

          A:并发修改异常。
          B:原因:
               在用迭代器遍历集合的时候,你又用集合本身在修改集合。
          C:解决方案:
               完全使用迭代器操作即可。
               完全使用集合操作即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值