ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Java学习-第一部分-第二阶段-第五节:集合
[打印本页]
作者:
罪恶克星
时间:
2022-9-16 17:24
标题:
Java学习-第一部分-第二阶段-第五节:集合
集合
笔记目录:
(
https://www.cnblogs.com/wenjie2000/p/16378441.html
)
前面我们保存多个数据使用的是数组,那么数组有不足的地方,我们分析一下。
●数组
长度开始时必须指定,而且一旦指定,不能更改
保存的必须为同一类型的元素
使用数组进行增加元素的示意代码-比较麻烦
写出Person数组扩容示意代码。
Person[] pers = new Person[1]; // 大小是1
pers[0] = new Person();
//增加新的Person对象 ?
Person[]pers2 = new Person[pers.length + 1];//新创建数组
for(){} //拷贝pers数组的元素到pers2
pers2[pers2.length - 1] = new Person();//添加新的对象
复制代码
集合
可以动态保存任意多个对象,使用比较方便!
提供了一系列方便的操作对象的方法:add、remove、set、get等
使用集合添加,删除新元素的示意代码-简洁了
集合的框架体系
Java的集合类很多,主要分为两大类,如图:[背下来]
//老韩解读
//1。集合主要是两组(单列集合,双列集合)
//2. Collection接口有两个重要的子接口 List Set,他们的实现子类都是单列集合
//3. Map接口的实现子类是双列集合,存放的 K-V
//4。把老师梳理的两张图记住
//collection
//Map
ArrayList arrayList = new ArrayList();
arrayList.add("jack ");
arrayList.add("tom");
HashMap hashMap = new HashMap();
hashMap.put("NO1", "北京");
hashMap.put("NO2","上海");
复制代码
Collection
Collection接口实现类的特点
collection实现子类可以存放多个元素,每个元素可以是Object
有些Collection的实现类,可以存放重复的元素,有些不可以
有些Collection的实现类,有些是有序的(List),有些不是有序(Set)
Collection接口没有直接的实现子类,是通过它的子接口Set 和 List来实现的
Collection接口常用方法,以实现子类ArrayList来演示.
add:添加单个元素
remove:删除指定元素
contains:查找元素是否存在
size:获取元素个数
isEmpty:判断是否为空
clear:清空
addAll:添加多个元素
containsAll:查找多个元素是否都存在
removeAll:删除多个元素
说明:以ArrayList实现类来演示.
List list = new ArrayList();
//add :添加单个元素
list.add("jack");
list.add(10);//此处10自动转为Integer类型 list.add(new Integer(10))
list.add(true);
System.out.println("list=" + list);//list=[jack, 10, true]
//remove:删除指定元素
//list.remove(0);//删除第一个元素
list.remove(true) ;//指定删除某个元素
list.remove((Integer)10);//如果直接填10,java会认为是移除列表中第11个对象
System.out.println("list=" + list);//list=[jack]
//contains:查找元素是否存在
System.out.println(list.contains( "jack"));//T
//size:获取元素个数
System.out.println(list.size());//1
//isEmpty:判断是否为空
System.out.println(list.isEmpty());//F
//clear:清空list.clear();
list.clear();
System.out.println("list="+ list);//list=[]
//addAll:添加多个元素(只要实现了collection接口就能作为参数)
ArrayList list2 = new ArrayList();
list2.add("红楼梦");list2.add("三国演义");
list.addAll(list2);
System.out.println("list=" + list);//list=[红楼梦, 三国演义]
//containsAll:查找多个元素是否都存在(只要实现了collection接口就能作为参数)
System.out.println(list.containsAll(list2));//T
// removeAll:删除多个元素
list.add("聊斋");
list.removeAll(list2);
System.out.println("list=" + list);//list=[聊斋]
//说明:以ArrayList实现类来演示。
复制代码
Collection接口遍历元素方式1-使用Iterator(迭代器)
Iterator对象称为迭代器,主要用于遍历Collection集合中的元素。
所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了lterator接口的对象,即可以返回一个迭代器。
Iterator的结构.[看图]
Iterator仅用于遍历集合,lterator本身并不存放对象.
提示:在调用iterator.next()方法之前必须要调用iterator.hasNext()进行检测。若不调用,且下一条记录无效,直接调用it.next()会抛出NoSuchElementException异常。
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
Collection 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);
//现在老师希望能够遍历col集合
//1。先得到col对应的迭代器
Iterator iterator = col.iterator();
//2.使用while循环遍历
//快捷键,快速生成while => itit (显示所有的快捷键的的快捷键ctrl + j)
while (iterator.hasNext()) {//判断是否还有数据
//返回下一个元素,类型是0bject
Object obj = iterator.next();
System.out.println("obj=" + obj);
}
//3.当退出while循环后,这时iterator迭代器,指向最后的元素
// iterator.next();//NoSuchElementException
// 4,如果希望再次遍历,需要重置我们的迭代器
iterator=col.iterator();
System.out.println( "===第二次遍历===");
while (iterator.hasNext()) {//判断是否还有数据
//返回下一个元素,类型是0bject
Object obj = iterator.next();
System.out.println("obj=" + obj);
}
}
}
class Book {
private String name;
private String author;
private double price;
public Book(String name, String author, double price) {
this.name = name;
this.author = author;
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
}
复制代码
Collection接口遍历对象方式2-for循环增强.
增强for循环,可以代替iterator迭代器,特点:增强for就是简化版的iterator,本质一样。只能用于遍历集合或数组。
>基本语法
for(元素类型 元素名:集合名或数组名){
访问元素
}
复制代码
演示
import java.util.ArrayList;
import java.util.Collection;
public class Test {
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(new Book("三国演义", "罗贯中", 10.1));
col.add(new Book("小李飞刀", "古龙", 5.1));
col.add(new Book("红楼梦", "曹雪芹", 34.6));
//老韩解读
//1.使用增强for,在Collection集合
// 2.增强for,底层仍然是迭代器
//3.增强for可以理解成就是简化版本的迭代器遍历
for (Object book : col) {
System.out.println("book=" + book);
}
//增强for,也可以直接在数组使用
int[] nums = {1, 8, 10, 90};
for (int i : nums) {
System.out.println("i=" + i);
}
}
}
class Book {
private String name;
private String author;
private double price;
public Book(String name, String author, double price) {
this.name = name;
this.author = author;
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
}
复制代码
List
List接口基本介绍
List 接口是Collection 接口的子接口 List .java
List集合类中元素有序(即添加顺序和取出顺序一致)、且可重复
List集合中的每个元素都有其对应的顺序索引,即支持索引。(list.get(3))
List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
JDK API中List接口的实现类布置前文图中展示的:
常用的有:ArrayList、LinkedList和Vector。
List接口的常用方法
List 集合里添加了一些根据索引来操作集合元素的方法
void add(int index, Object ele):在index位置插入ele元素
boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
Object get(int index):获取指定index位置的元素
int indexOf(Object obj):返回obj在集合中首次出现的位置
int lastlndexOf(Object obj):返回obj在当前集合中末次出现的位置
Object remove(int index):移除指定index位置的元素,并返回此元素
Object set(int index,Object ele):设置指定index位置的元素为ele ,相当于是替换
List subList(int fromlndex, int tolndex):返回从fromIndex到tolndex位置的子集合
[code]List list = new ArrayList();list.add("张三丰");list.add("贾宝玉");//void add(int index,0bject ele):在index位置插入ele元素// 在index =1的位置插入一个对象list.add(1, "韩顺平");System.out.println("list=" + list);//boolean addAll(int index,Collection eles):从index位置开始将eles中的所有元素添加进来List list2 = new ArrayList();list2.add("jack");list2.add("tom");list.addAll(1, list2);System.out.println("list=" + list);//Object get(int index):获取指定index位置的元素//说过//int indexOf(0bject obj):返回obj在集合中首次出现的位置System.out.println(list.indexOf("tom"));//2//int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置list.add("韩顺平");System.out.println("list=" + list);System.out.println(list.lastIndexOf("韩顺平"));//Object remove(int index):移除指定index位置的元素,并返回此元素(直接修改list,而非返回新的)list.remove(0);System.out.println("list=" + list);//Object set(int index,0bject ele):设置指定index位置的元素为ele,相当于是替换list.set(1, "玛丽");System.out.println("list=" + list);//List subList(int fromIndex,int toIndex):返回从fromIndex到toIndex位置的子集合//注意返回的子集合fromIndex
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4