java集合初学者必备Word下载.docx
- 文档编号:5832689
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:15
- 大小:379.32KB
java集合初学者必备Word下载.docx
《java集合初学者必备Word下载.docx》由会员分享,可在线阅读,更多相关《java集合初学者必备Word下载.docx(15页珍藏版)》请在冰点文库上搜索。
|--List
|--ArrayList
|--Vector
|--LinkedList
|--Set
|--HashSet
|--TreeSet
(4)Collection的功能概述(自己补齐)
添加功能
删除功能
判断功能
D:
获取功能
E:
长度功能
F:
交集(了解)
G:
把集合转数组(了解)
(5)Collection集合的遍历
迭代器(集合专用方式)
(6)迭代器
是集合的获取元素的方式。
是依赖于集合而存在的。
迭代器的原理和源码。
a:
为什么定义为了一个接口而不是实现类?
b:
看了看迭代器的内部类实现。
(7)Collection集合的案例(遍历方式迭代器)
集合的操作步骤:
A:
创建集合对象
B:
创建元素对象
C:
把元素添加到集合
D:
遍历集合
存储字符串并遍历
importjava.util.Collection;
importjava.util.ArrayList;
importjava.util.Iterator;
publicclassCollectionDemo{
publicstaticvoidmain(String[]args){
//创建集合对象
Collectionc=newArrayList();
//创建并添加元素
c.add("
hello"
);
world"
java"
//遍历集合
Iteratorit=c.iterator();
while(it.hasNext()){
Strings=(String)it.next();
System.out.println(s);
}
}
}
存储自定义对象并遍历
publicclassStudent{
privateStringname;
privateintage;
publicStudent(){}
publicStudent(Stringname,intage){
this.name=name;
this.age=age;
//getXxx()/setXxx()
publicclassStudentDemo{
//创建学生对象
Students1=newStudent("
林青霞"
27);
Students2=newStudent("
风清扬"
30);
Students3=newStudent("
刘意"
Students4=newStudent("
武鑫"
25);
Students5=newStudent("
刘晓曲"
16);
//添加元素
c.add(s1);
c.add(s2);
c.add(s3);
c.add(s4);
c.add(s5);
Students=(Student)it.next();
System.out.println(s.getName()+"
---"
+s.getAge());
3:
集合(List)(掌握)
(1)List是Collection的子接口
特点:
有序(存储顺序和取出顺序一致),可重复。
(2)List的特有功能:
(自己补齐)
迭代器功能
修改功能
(3)List集合的特有遍历功能
由size()和get()结合。
代码演示
Listlist=newArrayList();
list.add("
Iteratorit=list.iterator();
System.out.println("
----------"
for(intx=0;
x<
list.size();
x++){
Strings=(String)list.get(x);
(4)列表迭代器的特有功能;
(了解)
可以逆向遍历,但是要先正向遍历,所以无意义,基本不使用。
(5)并发修改异常
出现的现象
迭代器遍历集合,集合修改集合元素
原因
迭代器是依赖于集合的,而集合的改变迭代器并不知道。
解决方案
迭代器遍历,迭代器修改(ListIterator)
元素添加在刚才迭代的位置
集合遍历,集合修改(size()和get())
元素添加在集合的末尾
(6)常见数据结构
栈先进后出
队列先进先出
数组查询快,增删慢
链表查询慢,增删快
(7)List的子类特点(面试题)
ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
Vector
线程安全,效率低。
LinkedList
底层数据结构是链表,查询慢,增删快。
到底使用谁呢?
看需求?
分析:
要安全吗?
要:
Vector(即使要,也不使用这个,后面再说)
不要:
ArrayList或者LinkedList
查询多;
ArrayList
增删多:
LinkedList
什么都不知道,就用ArrayList。
(8)List集合的案例(遍历方式迭代器和普通for)
迭代器使用图解和原理解析
对象数组内存解析
集合继承体系
数据结构数组和链表
数据结构栈和队列
7随机获取10个1-20之间的随机数
packagecn.itcast_02;
importjava.util.ArrayList;
importjava.util.Random;
/*
*获取10个1-20之间的随机数,要求不能重复
*
*用数组实现,但是数组的长度是固定的,长度不好确定。
*所以我们使用集合实现。
*分析:
*A:
创建产生随机数的对象
*B:
创建一个存储随机数的集合。
*C:
定义一个统计变量。
从0开始。
*D:
判断统计遍历是否小于10
*是:
先产生一个随机数,判断该随机数在集合中是否存在。
*如果不存在:
就添加,统计变量++。
*如果存在:
就不搭理它。
*否:
不搭理它
*E:
*/
publicclassRandomDemo{
publicstaticvoidmain(String[]args){
//创建产生随机数的对象
Randomr=newRandom();
//创建一个存储随机数的集合。
ArrayList<
Integer>
array=newArrayList<
();
//定义一个统计变量。
intcount=0;
//判断统计遍历是否小于10
while(count<
10){
//先产生一个随机数
intnumber=r.nextInt(20)+1;
//判断该随机数在集合中是否存在。
if(!
array.contains(number)){
//如果不存在:
array.add(number);
count++;
}
//遍历集合
for(Integeri:
array){
System.out.println(i);
}
}
8键盘录入多个视频并且输出最大值
packagecn.itcast_03;
importjava.util.Arrays;
importjava.util.Scanner;
*键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值
创建键盘录入数据对象
键盘录入多个数据,我们不知道多少个,所以用集合存储
以0结束,这个简单,只要键盘录入的数据是0,我就不继续录入数据了
把集合转成数组
对数组排序
*F:
获取该数组中的最大索引的值
publicclassArrayListDemo{
//创建键盘录入数据对象
Scannersc=newScanner(System.in);
//键盘录入多个数据,我们不知道多少个,所以用集合存储
//以0结束,这个简单,只要键盘录入的数据是0,我就不继续录入数据了
while(true){
System.out.println("
请输入数据:
"
intnumber=sc.nextInt();
if(number!
=0){
}else{
break;
//把集合转成数组
//public<
T>
T[]toArray(T[]a)
Integer[]i=newInteger[array.size()];
//Integer[]ii=array.toArray(i);
array.toArray(i);
//System.out.println(i);
//System.out.println(ii);
//对数组排序
//publicstaticvoidsort(Object[]a)
Arrays.sort(i);
//获取该数组中的最大索引的值
System.out.println("
数组是:
+arrayToString(i)+"
最大值是:
+i[i.length-1]);
publicstaticStringarrayToString(Integer[]i){
StringBuildersb=newStringBuilder();
sb.append("
["
for(intx=0;
x<
i.length;
if(x==i.length-1){
sb.append(i[x]);
sb.append(i[x]).append("
"
]"
returnsb.toString();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 集合 初学者 必备