IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 第四周 Day5 -> 正文阅读

[移动开发]第四周 Day5

1.集合的引入

对象数组:能够储存对象的数组;
创建数组的格式:
    数据类型[] 数组名称 = new 数据类型[长度];
数组:
    既可以存储基本类型,也可以存储引用类型;
使用数组也可以完成针对引用类型数据的存储以及遍历,但是弊端是长度固定;数组操作引用类型数据,不适合操作长度一直变化的需求,所以使用"集合";
//使用数组存储5个学生,学生有姓名和年龄,(对象数组),将数组学生信息遍历出来

2.集合和数组的区别

1)长度的区别:
    数组:长度是固定的
    集合:长度数可变的
?
2)存储数据的区别
    数组:既可以存储基本数据类型,也可以存储引用数据类型;
    集合:只能存储引用数据类型,通过"泛型";
    
3)存储元素的区别
    数组:只能存储同一种数据类型的元素
    集合:如果没有泛型的约定,它可以存储任意的引用型元素
    
    泛型:<E>  --->Element元素
 ?      <T>  --->Type 都是引用类型
 ?      Collection<E>  --->模仿数组,在创建集合的明确数据类型
 ? ?例:Collection<String>--->明确存储String类型的元素
 ? ?但是,后期"反射"可以直接给里面加入任意类型,不加泛型,可能导致程序不安全;

3.集合的体系结构及功能

父接口Collection<E>  :单列集合,里面只能存储一种引用类型
?
子接口:
            List ? ? ? ? ?        set
         ArrayList<E> ? ? ?  HashSet<E>--->底层添加元素的实现--->HashMap
         LinkedList<E> ? ? ? TreeSet<E>--->底层的添加元素的实现--->TreeMap
         Vector<E>
 ? ? ? ? 
Collection:是所有集合的根接口,集合表示一组被称为其元素的对象。一些集合允许重复元素(List集合),而其他集合不允许重复(Set:唯一的);
JDK不提供此接口的任何直接实现:它提供了更具体的子接口的实现,如Set和List--->实现类(接口多态!)
?
Collection功能:
        添加:boolean add(E--Object(任意类型元素) e)---只要添加元素,元素数就+1,所以永远返回的true
        判断:
            boolean contains(Object o):是否包含指定的元素
 ? ? ? ? ?  boolean equals(Object o):比较
 ? ? ? ? ?  boolean isEmpty():判断集合是否为空
        删除:
            void clear():删除所有元素
 ? ? ? ? ?  boolean remove(Object o):删除集合中指定的元素
        获取功能:
            int size():获取集合元素数
            Iterator<E> iterator():迭代器(重点)--增强fou循环语句代替迭代器,写法简单
            Object[] toArray():传统 方式集合转换成对象数组--->遍历

4.集合的高级功能

带All的功能:
    boolean addAll(Collection c)添加一个集合中的所有元素
    boolean containsAll(Collection c):包括一个集合中元素;注意:包含一个集合中所有元素才是包含
    boolean removeAll(Collection c):删除集合中的包含的元素;删除的元素一个只要包含,都存在,那么就删除了
    boolean retainAll(Collection c):获取两个集合中交集元素;
    A集合对B集合求交集,
             ?如果没有交集元素,那么A集合内容就是[](-->存储交集的元素 没有交集)
 ? ? ? ? ? ? ?如果有交集,交集的元素是存在A集合中,返回值是看A集合中的元素内容是否发生变化
 ? ? ? ? ? ? ?如果有变化--->true
 ? ? ? ? ? ? ?如果没有变化--->false
?

5.集合的获取功能

1.Object[] toArray():传统 方式集合转换成对象数组--->遍历

5.1代码展示

public class CollectionDemo3 {
 ? ?public static void main(String[] args) {
 ? ? ? ?//针对集合的遍历方式1:Collection里面的Object[] toArray():
 ? ? ? ?//创建一个Collection集合
 ? ? ? ?Collection c ?= new ArrayList() ; //没有加入泛型的话-->里面可以存储任意的Object类型元素
?
 ? ? ? ?//创建5个学生对象
 ? ? ? ?Student s1 = new Student("刘备",45) ;
 ? ? ? ?Student s2 = new Student("曹操",50) ;
 ? ? ? ?Student s3 = new Student("关羽",35) ;
 ? ? ? ?Student s4 = new Student("张飞",30) ;
 ? ? ? ?Student s5 = new Student("周瑜",25) ;
?
 ? ? ? ?//将5个学生对象添加到Collection中
 ? ? ? ?c.add(s1) ;
 ? ? ? ?c.add(s2) ;
 ? ? ? ?c.add(s3) ;
 ? ? ? ?c.add(s4) ;
 ? ? ? ?c.add(s5) ;
 ? ? ? ?
 ? ? ? //将集合转换成对象数组
     ? //Collection里面的Object[] toArray()
 ? ? ? ?Object[] objs = c.toArray();
 ? ? ? //遍历
 ? ? ? ?for(int x = 0 ; x <objs.length ; x++){ 
 ? ? ?      Student s = (Student)objs[x] ;//向下转型
 ? ? ? ? ? ?System.out.println(s.getName()+"---"+s.getAge());
 ? ? ?  }
 ?  }
}

5.2加入泛型

泛型:
    就是集合对象的在创建的时候,就已经明确了存储的类型的限定!
格式:
     <E> EElement---->存储的引用数据类型的元素
加入泛型的好处:
    1)提高了程序安全性,不会出现类型转换问题!
 ? ? ? ? ? ? ? ?2)避免了强转类型转换的格式
 ? ? ? ? ? ? ? ?3)将运行时期异常提前到了编时译期(编译通过不了,不能运行!)--- (使用迭代器的方式进行遍历)
public class CollectionTest {
 ? ?public static void main(String[] args) {
 ? ? ? ?//创建一个Collection集合
 ? ? ? ?//加入泛型
 ? ? ? ?Collection<Student> c = new ArrayList<>() ;//后面<默认不写,默认和前面类型一致>
?
 ? ? ? ?//创建5个学生对象
 ? ? ? ?Student s1 = new Student("刘备",45) ;
 ? ? ? ?Student s2 = new Student("曹操",50) ;
 ? ? ? ?Student s3 = new Student("关羽",35) ;
 ? ? ? ?Student s4 = new Student("张飞",30) ;
 ? ? ? ?Student s5 = new Student("周瑜",25) ;
?
 ? ? ? ?//将5个学生对象添加到Collection中
 ? ? ? ?c.add(s1) ;
 ? ? ? ?c.add(s2) ;
 ? ? ? ?c.add(s3) ;
 ? ? ? ?c.add(s4) ;
 ? ? ? ?c.add(s5) ;
?
 ? ? ? ?//将集合转换成对象数组
 ? ? ? ?Object[] objects = c.toArray() ;
 ? ? ? ?for(int i = 0 ; i < objects.length ; i ++){
 ? ? ? ? ? ?Student s = (Student) objects[i]; //强转
 ? ? ? ? ? ?System.out.println(s.getName()+"---"+s.getAge());
 ? ? ?  }
 ?  }
}
?

6.集合遍历---利用迭代器

//迭代器的本质是迭代器的子实现类,其中的子实现类是ArraLIst集合实现的
public class CollectionDemo {
 ? ?public static void main(String[] args) {
?
 ? ? ? ?//创建集合对象
 ? ? ? ?Collection<String> c = new ArrayList<>() ;
?
 ? ? ? ?//添加字符串元素
 ? ? ? ?c.add("hello") ;
 ? ? ? ?c.add("world") ;
 ? ? ? ?c.add("JavaEE") ;
 ? ? ? ?//获取Collection集合的迭代器
 ? ? ? ?//Iterator<E> iterator() :返回值是接口--->需要返回需要返回的就是子实现类对象
 ? ? ? ?//Iterator迭代器的泛型和创建集合的明确的类型是一种
 ? ? ? ?//将集合的元素存储在迭代器中了
 ? ? ? ?Iterator<String> it = c.iterator();
 ? ? ? ?
 ? ? ? ? while(it.hasNext()){//是否有可以遍历的元素
 ? ? ? ? ? ? ? ?//成立,不断获取
 ? ? ? ? ? ?//Integer i = it.next() ;
 ? ? ? ? ? ?String s = it.next();
 ? ? ? ? ? ?System.out.println(s+"----"+s.length());
 ? ? ?  }
?
 ?  }
}
?
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:36:04  更:2022-01-17 11:36:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:54:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码