集合理解和好处
数组具有一定的不足:
1 长度开始时必须指定,而且一旦指定,就不能更改
2 保存的必须为同一类型的元素
3 使用数组进行增加元素的示意代码比较麻烦
集合
1 可以动态保存任意多个对象,使用比较方便
2 提供了一系列方便的操作对象的方法: add,remove,set,get
3 使用集合添加,删除新元素的示意代码--简洁
集合的框架体系
//Collection
//1 集合主要是两组(单列结合,双列集合)
//2 Collection接口有两个重要的子接口List,Set,实现子类
//都是单列集合
//3 Map接口实现的子类是双列结合,存放K-V
//梳理得图记住
//Map
Collection接口实现类的特点
1 collection 实现子类可以存放多个元素,每个元素可以是Object
2 有些Collection的实现类,可以存放重复的元素,有些不可以
3 有些Collection的实现类,有些是有序的(List),有些不是有序(Set)
4 Collection接口没有直接的实现子类,是通过他的子接口Set和List来实现的
ArrayList arrayList = new ArrayList();
//add 添加元素
arrayList.add("jack");
arrayList.add(10);
arrayList.add(true);
System.out.println("arrayList=" + arrayList);
//remove 删除指定元素
arrayList.remove(0);//删除第一个元素
arrayList.remove(true);//删除指定元素
System.out.println("arrayList=" + arrayList);
//contains 查找指定元素是否存在
arrayList.contains(10);
System.out.println(arrayList.contains(10));
//size 获取元素个数
System.out.println(arrayList.size());
//isEmpty 判断是否为空
System.out.println(arrayList.isEmpty());
//clear 清空
arrayList.clear();
System.out.println("arrayList=" + arrayList);
//addAll 添加多个元素
ArrayList arrayList1 = new ArrayList();
arrayList1.add("三国演义");
arrayList1.add("红楼梦");
arrayList.addAll(arrayList1);
System.out.println("arrayList=" + arrayList);
//containsAll 查找多个元素是否存在
System.out.println(arrayList.containsAll(arrayList1));
//removeAll 删除多个元素
arrayList.add("聊斋");
arrayList.removeAll(arrayList1);
System.out.println("arrayList=" + arrayList);
Collection 接口和常用方法
Collection接口遍历元素的方式1-使用Iterator(迭代器)
基本介绍
1 Iterator对象称为迭代器,主要用于遍历Collection集合中的元素
2 所有实现了Collection接口的集合类都有一个iterator()方法,用以返回
一个实现了Iterator接口的对象.即可以返回一个迭代器
3 Iterator的结构:
4 Iterator仅用于遍历集合,Iterator本身不存放对象
迭代器执行原理:
Iterator iterator = coll.iterator();
得到一个集合的迭代器
//hasNext();判断是否还有下一个元素;
while(iterator.hasNext()){
next()//作用:1 下移 2 将下移后集合位置上的元素返回
System.out.println(iterator.next());
}
[提示]
在调用iterator.next()方法之前必须要调用iterator.hasNext()进行检测
如果不调用,且下一条记录无效,直接调用it.next()会抛出异常
ArrayList col = new ArrayList();
col.add(new Book("三国演义","罗贯中",10.1));
col.add(new Book("小李飞刀","古龙",5.1));
col.add(new Book("红楼梦","曹雪芹",34.6));
//System.out.println("col=" + col);
//遍历集合
//1 先得到 col 对应的迭代器
Iterator iterator = col.iterator();
//使用while循环遍历
while(iterator.hasNext()){//判断是否还有数据
//返回下一个元素,类型是Object
Object obj = iterator.next();
System.out.println("obj=" + obj);
}
//快速生成:itit
//当退出while循环后,这时iterator迭代器指向最后的元素
//如果再往下取,就会抛出异常
//iterator.next();//异常
//4 如果想再往下取,需要重置迭代器
iterator = col.iterator();
System.out.println("=======第二次遍历======");
while (iterator.hasNext()) {
Object obj = iterator.next();
System.out.println("obj=" + obj);
}
Collection接口遍历元素的方式2-for循环增强
增强for循环,可以代替iterator迭代器,特点:增强for就是简化版的iterator
本质一样,只能用于遍历集合或数组
基本语法
for(元素类型 元素名 : 集合名称或数组名){
访问元素}
//使用增强for循环在Collection集合
//*增强for的底层仍然是迭代器
//增强for可以理解成简化版本的迭代器遍历
//快捷方式 I
for(Object book : col) {
System.out.println("book=" + book);
}
//增强for也可以用在数组上
// int num[] = {1,5,2,3,9,7};
// for(int i : num){
// System.out.println("i=" + i);
// }
List接口的基本介绍
List接口是Collection接口的子接口
1 List集合类中元素有序(即添加顺序和去除顺序一致),且可重复
2 List集合中的每个元素都有其对应的顺序索引,即支持索引
3 List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据
序号存取容器中的元素
4 JDK API中List接口的实现类常用的有
ArrayList,LinkedList和Vector
List常用的方法
ArrayList list = new ArrayList();
list.add("zsf");
list.add("jby");
//void add(int index, Object ele);
//在index位置插入ele元素
list.add(1,"hsp");
System.out.println("list=" + list);
//在index=1 的位置插入一个对象: hsp
ArrayList list2 = new ArrayList();
list2.add("tom");
list2.add("jack");
list.addAll(1,list2);
System.out.println("list= " + list);
//get(int index):获取指定index位置的元素
//indexOf(Object obj)返回obj在指定集合中出现的位置
System.out.println(list.indexOf("tom"));
//lastIndexOf 返回obj在当前集合中最后一次出现的位置
System.out.println(list.lastIndexOf("hsp"));
//remove(int index) 一处指定index位置的元素并返回
list.remove(0);
System.out.println("list=" + list);
//set(int index,Object ele) 指定index位置的元素为ele
//相当于是替换,索引必须存在
list.set(1,"lll");
System.out.println("list=" + list);
//List subList(int fromIndex, int toIndex):
//返回从fromIndex到toIndex位置的子集合
List returnlist = list.subList(0,2);
System.out.println("returnlist=" + returnlist);
//前闭后开,返回从fromIndex到toIndex前的元素
List的三种遍历方式[ArrayList,LinkedList,Vector]:
1 使用 iterator
2 使用增强for
3 使用普通for
//1 迭代器
Iterator iterator = list.iterator();
while(iterator.hasNext()){
Object obj = iterator.next();
System.out.println("obj= " + obj);
}
//2 增强for
for(Object obj : list){
System.out.println("obj=" + obj);
}
//3 普通for
for (int i = 0; i < list.size(); i++) {
System.out.println("list=" + list.get(i));
}
[练习] 使用List添加图书,并使用冒泡法按照价格排序,并遍历打印
ArrayList list = new ArrayList();
list.add(new book("红楼梦",100,"曹雪芹"));
list.add(new book("西游记",10,"吴承恩"));
list.add(new book("水浒传",9,"施耐庵"));
list.add(new book("三国演义",80,"罗贯中"));
//list.add(new book("西游记",10,"吴承恩"));
for (Object book :list) {
System.out.println(book);
}
sort(list);
System.out.println("排序后");
for (Object book :list) {
System.out.println(book);
}
}
public static void sort(List list){
int listsize = list.size();
for (int i = 0; i < listsize; i++) {
for (int j = 0; j < i; j++) {
book booki = (book)list.get(i);>>向下转型
book bookj = (book)list.get(j);>>向下转型
if(booki.getPrice() < bookj.getPrice()){
list.set(i,bookj);
list.set(j,booki);
}
}
}
}
}
>>>>>>>>>>>>>>>>注意这里用到了向下转型
ArrayList注意事项
1 permits all element ,including null,ArrayList可以加入null,并且多个
2 ArrayList是由数组来实现数据存储的
3 ArrayList基本等同于
没有合适的资源?快使用搜索试试~ 我知道了~
我的java学习笔记1
共1709个文件
class:763个
java:612个
xml:154个
需积分: 0 0 下载量 74 浏览量
2023-07-31
22:44:52
上传
评论
收藏 29.64MB RAR 举报
温馨提示
我的java学习笔记1
资源推荐
资源详情
资源评论
收起资源包目录
我的java学习笔记1 (1709个子文件)
MyPanel.class 8KB
MyPanel.class 8KB
MyPanel.class 6KB
HouseView.class 6KB
DBUtils_USE.class 4KB
M1Tank_evil.class 4KB
M1Tank_evil.class 4KB
OMSView.class 4KB
QQServer.class 4KB
MyPanel.class 4KB
QQView.class 4KB
MainMenu.class 4KB
ServerConnectClientThread.class 4KB
Recorder.class 3KB
Recorder.class 3KB
UserClientService.class 3KB
BasicDAO_.class 3KB
BasicDAO_.class 3KB
SmallChangeOOP.class 3KB
MyPanel.class 3KB
JdbcConn.class 3KB
JDBCUtilsByDruid_.class 3KB
SendNewsToAllService.class 3KB
SmallChangeSys.class 3KB
Utility.class 3KB
Utility.class 3KB
ClientConnectServerThread.class 3KB
Utility.class 3KB
FileClientService.class 3KB
TestDAO_.class 3KB
HdbcUtils_Use.class 3KB
MapFor.class 2KB
GenericExercise.class 2KB
Reflection02.class 2KB
MapExercise.class 2KB
DAO.class 2KB
MessageClientService.class 2KB
HomeworkDownloadServer01.class 2KB
ResultSet_.class 2KB
ManageClientThreads.class 2KB
Statement.class 2KB
AePlayWave.class 2KB
AePlayWave.class 2KB
Reflection01.class 2KB
PreparedStatement_.class 2KB
Homework02.class 2KB
SocketTCP03Server.class 2KB
Batch_.class 2KB
Transaction_.class 2KB
Message.class 2KB
Message.class 2KB
SocketTCP03Client.class 2KB
HomeworkDownloadClient01.class 2KB
Homework01Server.class 2KB
Employee01.class 2KB
PreparedStatementDML.class 2KB
Homework01.class 2KB
ReflecCreatInstance.class 2KB
M1Tank_evil.class 2KB
Actor.class 2KB
Actor.class 2KB
ArrayStack2.class 2KB
GenericExercise001.class 2KB
FileInputStream_.class 2KB
FileReader_.class 2KB
ArrayStackDemo.class 2KB
C3P0_.class 2KB
Calculator.class 2KB
Homework01.class 2KB
Person.class 2KB
HouseService.class 2KB
House.class 2KB
Class02.class 2KB
Homework02.class 2KB
Homework03.class 2KB
Homework01.class 2KB
ListExercise02.class 2KB
Homework02.class 2KB
Account.class 2KB
Collections02.class 2KB
Homework01Client.class 2KB
TCPFileUploadServer01.class 2KB
SocketTCP02Server.class 2KB
ReflecAccessMethod.class 2KB
TCPFileUploadServer.class 2KB
ArrayExercise.class 2KB
Tiger.class 2KB
Homework03.class 2KB
MyDate.class 2KB
API001.class 2KB
JdbcUtils.class 2KB
GetClass.class 2KB
BufferedCopy02.class 2KB
SocketTCP02Client.class 2KB
BufferedCopy_.class 2KB
Doctor.class 2KB
ReflectionQuestion.class 2KB
FileCopy.class 2KB
MyDate.class 2KB
Homework02Sender.class 2KB
共 1709 条
- 1
- 2
- 3
- 4
- 5
- 6
- 18
资源评论
挖挖挖挖挖
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功