付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章数组和集合内容回顾掌握类的继承的实现 继承性、成员变量隐藏、成员方法重写 this关键字理解抽象类和接口 上转型对象、接口做参数理解类的多态 重载和重写掌握包的创建和使用目标:掌握Java中一维、二维数组的定义和使用方法。掌握对象的存储方式ArralyList、LinkedList、VectorHashSet、TreeSet、LinkedHashSetHashMap、TreeMap、LinkedHashMap6.1 数组数组是具有相同数据类型的元素按顺序组成的一种集合。数组的长度一经确定不能改变。在java中,把数组当作对象来实现的。length属性:数组元素的个数6.2.1 一维数组的
2、声明 定义格式: 数组类型 数组名 ; 或 数组类型 数组名;数组类型可为Java中的任何数据类型。数组名,必须符合标识符定义规则。 “ ”指明该变量是一个数组类型的变量,可放到数组名后面,也可放到数组名前。 int a;int a;注意:数组定义时没有指定数组的长度,系统没有为数组分配内存空间,因此数组元素不能立即访问。 int a ; a0=3;(X)6.2.1 一维数组的初始化1、赋初值初始化数组(静态) 数组类型 数组名=初值表 int a =1,2,3;6.2.1 一维数组的初始化2、用new初始化数组(动态)(1)先声明数组再初始化数组名new 数组类型数组长度; int a; a
3、=new int10;(2)声明的同时进行初始化数组类型 数组名 new 数组类型数组长度; int a=new int10;6.2.3 一维数组的引用 引用格式为: 数组名下标int a=new int10;int b=a0+a9; 数组下标为从0到9。数组有一个length属性,表示数组的长度。 int a=new int10; a.length为10。练习已知整型数组a=3,5,2,1,4,对这个数组求最大值、求和以及排序操作。class UseArraypublic static void main(String args)int i,j,max=0,sum=0,temp=0;int
4、a=3,5,2,1,4;for(i=0;imax) max=ai;sum=sum+ai;System.out.println(“最大数是:+max);System.out.println(“数组和为:+sum);for(i=0;ia.length-1;i+)for(j=i+1;jaj)temp=ai; ai=aj; aj=temp; System.out.println(“排序后的结果:);for(i=0;ia.length;i+) System.out.println(a+i+=+ai); 6.3 多维数组123456789145678多维数组类似棋盘Java中没有真正的多维数组,只有数组的
5、数组,Java中多维数组不一定是规则的矩阵形式6.3.1 二维数组的声明定义格式为: 数组类型 数组名 ;或 数组类型 数组名;或 数组类型 数组名 ; int a; 或 int a; 或 int a; 数组的数组1.在数组声明时为数组初始化(静态) int a=1,2,3,4,5,6;6.3.1 二维数组的初始化2.使用new分配内存空间(动态)(1)直接分配空间,如: int a=new int22;(2)分别为各行分配空间,如: int a=new int2; a0=new int2; a1=new int3; (下页举例讲解 声明和初始化)6.3.1 二维数组的声明int a =new
6、 int33; int a =new int3 ; a0=new int1; a1=new int3; a2=new int2;1234567891456786.3.2 二维数组的初始化1234int a =1,2,3,4 int a =new int22; a00=1; a01=2; a10=3; a11=4;6.3.2 二维数组的初始化 int a =new int3 ; a0=new int1; a00=1; a1=new int3; a10=4; a11=5; a12=6; a2=new int2; a20=7; a21=8;或:int a =1,4,5,6,7,8;1456786.3
7、 二维数组的引用引用格式为:数组名下标1下标2; 下标1,下标2分别表示二维数组的第一、二维下标。二维数组有一个length属性,表示数组的维数,每一维有一个length属性,表示每一维的长度。练习:遍历二维数组的所有元素已知二维数组b=2,3,1,3,3,3,5,对该二维数组的所有元素求和public class UseArray_2 public static void main(String args) int i,j,sum=0; int b=2,3,1,3,3,3,5; for(i=0;ib.length;i+) for(j=0;jbi.length;j+) sum=bij+sum;
8、 System.out.println(二维数组各元素的和:+sum); 6.4 数组的常用方法System.arraycopy()Arrays.sort()Arrays.binarySearch()说明:Arrays类在java.util包中,定义了关于数组的一系列的方法。可以通过帮助文档,查看其他的方法。功能:复制数组格式:public static void arraycopy(object src,int src_pos , object dst, int dst_pos,int length)其中:src:源数组名 src_pos:源数组的起始位置 dst:目标数组名 length:
9、复制的长度 dst_pos:目标数组的起始位置 1. System.arraycopy()应用举例:使用arraycopy()复制数组class UseArrayCopypublic static void main(String args)int a=1,2,3,4,5,6,7;int b=new int6;int i;System.arraycopy(a,1,b,2,3);for(i=0;ib.length;i+)System.out.print(bi+ );调用arraycopy()2. Arrays.sort()功能:将数组按递增排序格式: public static void sor
10、t(Object arrayname)public static void sort(Object a,int fromindex,int toindex)将数组起始位置到终止位置的数据进行排序应用举例:使用Sort()方法排序import java.util.*;class ArraySortpublic static void main(String args)int a=7,5,2,6,3;Arrays.sort(a);for(int i=0;ia.length;i+)System.out.print(ai+ );Arrays类包含在java.util文件包中调用Sort()方法输出结果
11、:2 3 5 6 7应用举例:使用Sort()方法排序import java.util.*;class ArraySortpublic static void main(String args)int a=7,5,2,6,3;Arrays.sort(a,1,4);for(int i=0;ia.length;i+)System.out.print(ai+ );Arrays类包含在java.util文件包中调用Sort()方法输出结果:7 2 5 6 3 功能:对已排序的数组进行二分法查找,并返回查找结果。如果找到,则返回元素所在位置;若没有找到,则返回负数。语法格式: public static
12、 int binarySearch(Object a,Object key)其中,a为已排序好的数组,key为要查找的数据。3. Arrays.binarySearch()import java.util.*;class ArraySearchpublic static void main(String args)int a=2,4,5,7,9;int key=5,pos;pos=Arrays.binarySearch(a,key);if(pos0)System.out.println(元素+key+在数组中不存在);elseSystem.out.println(元素+key+在数组中的位置为
13、+pos);6.5集合CollectionSetListHashSetLinkedListArrayListMapHashMapVector6.5.1 ListList:可变长对象数组,元素类型必须是对象。ArrayList:擅长于随机访问元素,ArrayList中部插入和删除元素的速度慢。LinkedList:顺序访问方便,插入和删除也容易,和ArrayList相比,随机访问速度相对慢一点,但却有其它的优点。Vector:ArrayList比Vector速度快,如果涉及到多线程,还是使用Vector。6.5.1 List顺序表:ArrayList、 LinkedList构造方法ArrayLi
14、st()生成对象:常用方法:add(Object content); add(int index,Object content);get(int index);remove(intindex) remove(Object element)size() set(intindex, Objectelement) (举例讲解)ArrayList list = new ArrayList();6.5.2 Listimport java.util.ArrayList;public class ListEx public static void main(String args) ArrayList li
15、st = new ArrayList();list.add(1);list.add(2);list.add(2);list.add(3);System.out.println(list);自动封箱自动调用toString()6.5.2 HashSet无序可以不允许重复:元素类型重写hashCode()方法、equals()方法后, HashSet不再接受重复的元素。用法类似ArrayList6.5.2 HashSetimport java.util.HashSet;import java.util.Iterator;class HashSetTest public static void ma
16、in(String args) HashSet hs = new HashSet(); hs.add(new Student(1, zhangsan); hs.add(new Student(2, lisi); hs.add(new Student(1, zhangsan); Iterator it = hs.iterator(); while (it.hasNext() System.out.println(it.next().toString(); 6.5.2 HashSetclass Student int num; String name; Student(int num, Strin
17、g name) this.num = num; = name; public int hashCode()/ 重写hashCode()方法 return num * name.hashCode(); public boolean equals(Object o)/重写equals()方法 Student s = (Student) o; return num = s.num & name.equals(); public String toString() return num + : + name; 1:zhangsan3:wangwu2:lisiIterat
18、or接口所有实现了Collection接口的容器类都有一个iterator()方法,用于返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作Iterator的主要方法:boolean hasNext();/判断指针右边是否有元素object next();/返回指针右边的元素并将游标移动到下一个位置void remove();删除迭代器返回的最后一个元素next()next()next()6.5.3 Map(一对对象)以(键,值)的形式存放数据。生成对象:常用方法:put(K key, V value)get(Object key)re
19、move(Object key) size()HashMap map=new HashMap();6.5.3 Map(一对对象)import java.util.*;/检查某个随机数出现的次数public class Statistics public static void main(String args) Random random=new Random(); HashMap map=new HashMap(); for (int i = 0; i 20; i+) int r=random.nextInt(10); Integer freq=map.get(r); map.put(r, freq=null?1:freq+1); System.out.println(map); 总结List按数据写入顺序存储,Set不允许有重复数据、Map存储成对数据。ArrayList和LinkedList是可变长对象数组,ArrayList灵活于随机访问,L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中垦供应链管理限公司公开招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2026中国铁路南宁局集团公司校园招聘1655人易考易错模拟试题(共500题)试卷后附参考答案
- 2026中国铁塔甘肃分公司校园招聘15人易考易错模拟试题(共500题)试卷后附参考答案
- 2026中国通信服务浙江公司校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2026年物流师每日一练带答案详解(预热题)
- 2026年一级造价工程师《安装计量》考前冲刺练习题库附答案详解(典型题)
- 2026年技术经纪人练习题【模拟题】附答案详解
- 2026年人身保险模拟题库讲解及完整答案详解(夺冠)
- 2026年县乡教师选调《教师职业道德》通关模拟卷含答案详解【黄金题型】
- 2026年一级造价师之建设工程计价模拟题库及完整答案详解【夺冠】
- 2025年医药企业研发外包(CRO)模式下的合同管理与合规性报告
- 贵州省2024届中考数学试卷(含答案)
- 大坝变形监测实施方案
- 新型储能项目定额(锂离子电池储能电站分册) 第二册 安装工程
- T/CECS 10169-2021埋地用聚乙烯(PE)高筋缠绕增强结构壁管材
- 配送车辆卫生管理制度
- 2025-2030磁流变液行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 超星尔雅学习通《科学计算与MATLAB语言(中南大学)》2025章节测试附答案
- 校园互助平台创业计划
- 《颈椎病的针灸治疗》课件
- 《一套汽车升降专用的液压升降平台的结构设计》14000字(论文)
评论
0/150
提交评论