Java基础复习(数组,集合,集合迭代器)

 一.数组
1.概念:数组Array,标志是[ ] 用于存储多个相同类型数据的集合,想要获取数组中的元素值,可通过下标来获取
             数组下标从0开始,下标的最大值是数组的长度减一
2.创建数组:数组的创建分为动态初始化和静态初始化
                  1)动态初始化:int []a =new int[5]
                  2)  静态初始化:int []b = new int[]{1,2,3,4,5};
                                           int []c = {1,2,3,4,5};
3.数组创建过程:程序创建数组int[] a = new int[5];时发生了什么?
1)在内存中开辟连续的空间,用来存放数据,长度是5
2)给数组完成初始化过程,给每个元素赋予默认值,int类型默认值是0
3)数组完成初始化会分配一个唯一的地址值
4)把唯一的地址值交给引用类型的变量a去保存

二.数组工具类
1.Arrays.toString(把数组里的数据用逗号连接成一个字符串)
2.Arrays.sort(对数组进行排序,对基本类型数组使用的是优化后的快速排序算法,效率高
                      对引用类型数组,使用的是优化后的合并排序算法)
3.Arrays.copyOf(把数组赋值成指定长度的新数组
                           新数组的长度大于原数组,相当于复制,并增加位置
                           新数组的长度小于原数组,相当于截取一部分数据)

三.集合
1.Java中提供了一些集合类,这些集合类又称之为容器
提到容器会想到数组,集合与数组最主要的不同是 数组的长度是固定的,集合的长度是可变的,
数组的访问方式比较单一,插入删除等操作比较繁琐,而集合的访问方式比较灵活

2.常用的集合类
List集合,Set集合,Map集合,其中List与Set集合继承了Collection接口,各个接口还提供了不同的实现类

3.集合的概念:
用来存放对象的数据结构,而且长度可变,可以存放不同类型的对象,并且提供了一组操作成批对象的方法
Collection接口提供了添加元素/删除元素/管理元素的父类接口公共方法,由于List与Set接口都继承了Collection接口
因此那些方法对于List集合和Set集合是通用的

4.集合的继承结
集合的顶级根接口是Collection--添加元素/删除元素/管理元素的父接口公共方法
子接口1 List--数据有下标,有序,可重复
             实现类1 ArrayList
             实现类2 LinkedList
子接口2 Set--数据无下标,无序,不可重复【常用于数据去重】
             实现类1 HashSet
             实现类2 TreeSet--红黑树
其他的集合:Map 接口--键值对【Entry<K,V>】的方式存数据
实现类1:HashMap
实现类2:TreeMap

5.Collection接口的常用方法 

 

6.泛型
概念:<?> 他就是泛型,通常用来和集合对象一起使用
          他是程序的增强器,目前主流的开发模式
作用:
1)约束集合中元素的类型,编译器可以在编译期根据泛型约束提供一定的安全检查,代码的通用性更强
2)可以提升代码的可读性,编译后会被删除,不会出现在最终的源码中,不会影响JVM运行的性能 

 

 7.迭代的步骤:
1)获取迭代器
Iterator<E> iterator() 返回在此 collection 的元素上进行迭代的迭代器
2)循环迭代集合中的所有元素
boolean hasNext() 如果仍有元素可以迭代,则返回 true。
3)获取本轮循环迭代到的元素
 E next() 返回迭代的下一个元素 

 8.迭代器Iterator在Collection接口中的使用
1)配合while()循环实现遍历输出:

1 ArrayList list = new ArrayList();
2 //此处省略list的具体赋值过程
3 Iterator it = list.iterator();
4         while(it.hasNext()){
5             System.out.println(it.next());
6         }


2)配合for()循环实现遍历输出:

1 ArrayList list = new ArrayList();
2 //此处省略list的赋值过程
3 for(Iterator it = list.iterator();it.hasNext();){
4             System.out.println(it.next());
5 }

9.迭代器Iterator在Map接口中的使用:
1)与while()的结合:

1 HashMap<K,V> myMap = new HashMap<K,V>();
2 //省略myMap的的赋值过程
3 Iterator<Map.Entry<K,V> it=myMap.entrySet().iterator();
4 while(it.hasNext()){
5         System.out.println(it.next());
6 }
7 


2)与for()的结合: 

1 HashMap<K,V> myMap=new HashMap<K,V>();
2 //省略myMap的赋值过程
3 for(Iterator<Map.Entry<K,V>> it=myMap.entrySet().iterator();it.hasNext();){
4             System.out.println(it.next());
5 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值