1.集合的理解和好处
我们在之前保存多个数据使用的时数组,那么数组有不足的地方
数组
- 长度开始时必须指定,而且一旦指定,不能修改
- 保存的必须为同一类型的元素
- 使用数组进行增加元素的示意代码-比较麻烦
集合
- 可以动态保存任意多个对象 使用比较方便
- 提供了一系列方便的操作对象的方法:add、remove、set、get等
- 使用集合添加,删除新元素的示意代码-简洁
2.集合的框架体系
Java的集合类很多 主要分为两大类(背下来!)


- 集合主要是两组(单列集合 双列集合)
- Collection接口有两个重要的子接口 List Set 他们的实现子类都是单列集合
- Map 接口的实现子类 是双列集合 存放的K-V(键值对)
package com.logic.collection_;
import java.util.ArrayList;
import java.util.HashMap;
/**
* @author logic
* @version 1.0
*/
@SuppressWarnings("all")
public class Collection_ {
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
arrayList.add("all");
arrayList.add("one");
HashMap hashMap = new HashMap();
hashMap.put("one", "1");
hashMap.put("two", "2");
}
}
3.Collection接口和常用方法
Collection接口实现类的特点
- Collection实现子类可以存放多个元素,每个元素可以是Obiect
- 有些Collection的实现类,可以存放重复的元素,有些不可以
- 有些Collection的实现类,有些是有序的(List),有些无序(Set)
- Collection接口没有直接的实现子类,是通过它的子接口Set 和List来实现的
package com.logic.collection_;
import java.util.ArrayList;
import java.util.List;
/**
* @author logic
* @version 1.0
*/
public class CollectionMethod {
@SuppressWarnings({"all"})
public static void main(String[] args) {
List list = new ArrayList();
// add:添加单个元素
list.add("jack");
list.add(10);//list.add(new Integer(10))
list.add(true);
System.out.println("list=" + list);
// remove:删除指定元素
//list.remove(0);//删除第一个元素
list.remove(true);//指定删除某个元素
System.out.println("list=" + list);
// contains:查找元素是否存在
System.out.println(list.contains("jack"));//T
// size:获取元素个数
System.out.println(list.size());//2
// isEmpty:判断是否为空
System.out.println(list.isEmpty());//F
// clear:清空
list.clear();
System.out.println("list=" + list);
// addAll:添加多个元素
ArrayList list2 = new ArrayList();
list2.add("红楼梦");
list2.add("三国演义");
list.addAll(list2);
System.out.println("list=" + list);
// containsAll:查找多个元素是否都存在
System.out.println(list.containsAll(list2));//T
// removeAll:删除多个元素
list.add("聊斋");
list.removeAll(list2);
System.out.println("list=" + list);//[聊斋]
// 说明:以ArrayList实现类来演示.
}
}
Collection接口遍历元素方式1-使用Iterator(迭代器)
基本介绍
- Iterator对象称为迭代器,主要用于遍历 Collection 集合中的元素
- 所有实现了 Collectign 接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象,即可以返回一个迭代器
- lterator 仅用于遍历集合,lterator 本身并不存放对象


在调用Iterator.next()方法之前,必须要调用Iterator.hasNext(),若不调用,且下一条记录无效,直接调用next()会抛出进行检测。NoSuchElementException异常
迭代器的使用案例
package com.logic.collection_;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* @author logic
* @version 1.0
*/
public class CollectionIterator {
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(new Book("三国演绎", "罗贯中", 20));
col.add(new Book("红楼梦", "曹雪芹", 23));
col.add(new Book("西游记", "吴承恩", 30));
//System.out.println("col=" + col);
Iterator iterator = col.iterator();
int i = 0;
//一个快捷键 快速生成while循环 => itit
//ctrl + j 显示快捷模板
while (iterator.hasNext()) {
System.out.println("i = " + i);
Object obj = iterator.next();
System.out.println("obj = " + obj);
i++;
}
//当退出while循环后 , 这时iterator迭代器,指向最后的元素
//iterator.next();//NoSuchElementException
//如果希望再次遍历,需要重置我们的迭代器
iterator = col.iterator();
System.out.println("===第二次遍历===");
while (iterator.hasNext()) {
Object obj = iterator.next();
System.out.println("obj=" + obj);
}
}
}
class Book {
private String bookName;
private String bookAuthor;
private double bookPrice;
public Book(String bookName, String bookAuthor, double bookPrice) {
this.bookName = bookName;
this.bookAuthor = bookAuthor;
this.bookPrice = bookPrice;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookAuthor() {
return bookAuthor;
}
public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
}
public double getBookPrice() {
return bookPrice;
}
public void setBookPrice(double bookPrice) {
this.bookPrice = bookPrice;
}
@Override
public String toString() {
return "Book{" +
"bookName='" + bookName + '\'' +
", bookAuthor='" + bookAuthor + '\'' +
", bookPrice=" + bookPrice +
'}';
}
}
1197

被折叠的 条评论
为什么被折叠?



