单列集合 collection
可重复list
ArrayList linkedList
不可重复set
HashSet TreeSet
双列集合 map
HashMap
Collection 集合概述
1.是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
2.JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
创建Collection对象
1.多态的方式
2.具体的实现类ArrayList
import java.util.ArrayList;
import java.util.Collection;
public class day2collection集合概述和引用 {
public static void main(String[] args) {
Collection c = new ArrayList();
//添加元素 :boolean add(E e)
c.add("hello");
c.add("world");
c.add("java");
System.out.println(c);
}
}
集合常用方法
Collection集合常用方法 boolean add(E e) 添加元素 boolean remove(Object o) 从集合中移除指定的元素 void clear() 清空集合中的元素 boolean contains(Object o) 判断集合中是否包含指定元素 boolean isEmpty() 判断集合是否为空 int size() 集合的长度,也就是集合中元素的个数 alt+7快捷键打开一个窗口 能够看到类的信息
import java.util.ArrayList;
import java.util.Collection;
public class day3Collection集合常用方法 {
public static void main(String[] args) {
//创建集合对象
Collection c = new ArrayList<>();
//boolean add(E e) 添加元素
c.add("hello");
c.add("world");
c.add("java");
//boolean remove(Object o) 从集合中移除指定的元素
System.out.println(c.remove("world"));
System.out.println(c.remove("jaba"));
//void clear() 清空集合中的元素
c.clear();
//boolean contains(Object o) 判断集合中是否包含指定元素
System.out.println(c.contains("world"));
//boolean isEmpty() 判断集合是否为空
System.out.println(c.isEmpty());
//int size() 集合的长度,也就是集合中元素的个数
System.out.println(c.size());
//输出集合对象
System.out.println(c);
}
}
Collection集合的遍历
Iterator: 迭代器,集合的专用遍历方式 *Iteratoriterator(): 返回此集合中元素的迭代器,通过集合的iterator()方法得到 *迭代器是通过集合的iterator()方法得到的,所以我们说他是依赖于集合而 存在的 Iterator中的常用方法 E next():返回迭代中的下一个元素 boolean hasNext(): 如果迭代具有更多元素,则返回true
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class day4Collection集合的遍历 {
public static void main(String[] args) {
//创建集合对象
Collection c = new ArrayList<>();
//添加元素
c.add("hello");
c.add("world");
c.add("java");
//Iterator iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到
Iterator it = c.iterator();
// if (it.hasNext()){
// System.out.println(it.next());
// }if (it.hasNext()){
// System.out.println(it.next());
// }if (it.hasNext()){
// System.out.println(it.next());
// }if (it.hasNext()){
// System.out.println(it.next());
// }
while(it.hasNext()){
// System.out.println(it.next());
String s = it.next();
System.out.println(s);
}
}
}
集合使用步骤
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class day5集合使用步骤 {
public static void main(String[] args) {
Collection c = new ArrayList<>();
c.add("hello");
c.add("world");
c.add("java");
Iterator it = c.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
}
Collection存储学生对象并遍历
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
思路: ①定义学生类 ②创建Collection对象 ③创建学生对象 ④把学生添加到集合 ⑤遍历集合(迭代器方式)
public class day6Collection存储学生对象并遍历 {
public static void main(String[] args) {
//创建Collection集合对象
Collection c = new ArrayList<>();
//创建学生对象
day6Student s1 = new day6Student("杨要想",19);
day6Student s2 = new day6Student("率秀气",18);
day6Student s3 = new day6Student("张帅",20);
//把学生添加到集合
c.add(s1);
c.add(s2);
c.add(s3);
//遍历集合(迭代器方法)
Iterator it = c.iterator();
while(it.hasNext()){
day6Student s = it.next();
System.out.println(s.getName() + "," + s.getAge());
}
}
}
List集合概述和特点
List集合概述 ·有序集合(也称为序列),用户可以精准控制列表中每个元素的插入位置。用户可以 通过整数索引访问元素,并搜索列表中的元素。 ·与Set集合不同,列表通常允许重复的元素 List集合特点 ·有序:存储和取出的元素顺序一致 ·可重复:存储的元素可以重复
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class day1List集合概述和特点 {
public static void main(String[] args) {
//创建集合元素
List list = new ArrayList<>();
//添加元素
list.add("hello");
list.add("world");
list.add("java");
list.add("world");
//直接输出集合对象
System.out.println(list);
//遍历集合
Iterator it = list.listIterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
List集合特有方法
void add(int index,E element) 在此集合的指定位置插入指定的元素 E remove(int index) 删除指定索引处的元素,返回被删除的元素 E set(set index,E element) 修改指定索引处的元素,返回被修改的元素 E get(int index) 返回指定索引处的元素
import java.util.ArrayList;
import java.util.List;
public class day2List特有方法 {
public static void main(String[] args) {
//创建集合元素
List list = new ArrayList<>();
//添加元素
list.add("hello");
list.add("world");
list.add("java");
//void add(int index,E element) 在此集合的指定位置插入指定的元素
list.add(1,"javaee");
//list.add(11,"als") 越界异常
//E remove(int index) 删除指定索引处的元素,返回被删除的元素
list.remove(1);
//E set(set index,E element) 修改指定索引处的元素,返回被修改的元素
list.set(2,"lzy");
//E get(int index) 返回指定索引处的元素
System.out.println(list.get(1));
//输出集合对象
System.out.println(list);
//遍历集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
①定义学生类 ②创建list对象 ③创建学生对象 ④把学生添加到集合 ⑤遍历集合(迭代器方式,for循环方式)
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class day3List集合存储学生对象并遍历 {
public static void main(String[] args) {
//创建list集合对象
List list = new ArrayList<>();
//创建学生对象
day3Student s1 = new day3Student("张三",66);
day3Student s2 = new day3Student("李四",96);
day3Student s3 = new day3Student("王五",86);
//把学生添加到集合
list.add(s1);
list.add(s2);
list.add(s3);
//遍历集合
Iterator it = list.listIterator();
while(it.hasNext()){
day3Student s = it.next();
System.out.println(s.getName() + "," + s.getAge());
}
for (int i = 0; i < list.size(); i++) {
day3Student c = list .get(i);
System.out.println(c.getName() + "," + c.getAge());
}
}
}
并发修改异常
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
//遍历集合 得到每一个元素 看有没有world这个元素 如果有 我就添加一个 javaee 元素
//ConcurrentModificationExceptionh 当不允许这样的修改时,可以通过检测到对象的并发修改的方法来抛出此异常
public class day4并发修改异常 {
public static void main(String[] args) {
//创建集合对象
List list = new ArrayList<>();
//添加元素
list.add("hello");
list.add("world");
list.add("java");
//遍历集合 得到每一个元素 看有没有world这个元素 如果有 我就添加一个 javaee 元素
Iterator it = list.iterator();
while(it.hasNext()){
String s = it.next();
if (s.equals("world")){
list.add("javaee");
}
}
// for (int i = 0; i < list.size(); i++) {
// String s = list.get(i);
// if (s.equals("world")){
// list.add("javaee");
// }
// }
//输出集合对象
System.out.println(list);
}
}
ListIterator:列表迭代器
·通过LIst集合的listIterator()方法得到,所以说它是List集合特有的迭代器 ·用于允许程序员沿任一方向遍历列表的的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置ListIterator中的常用方法
·E next():返回迭代中的下一个元素 ·boolean hasNext():如果迭代具有更多元素,则返回true ·E previous():返回列表中的上一元素 ·boolean hasPrevious():如果此迭代器在相反方向遍历列表时具有更多元素,则返回true ·void add(E e):将指定的元素插入列表`
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class day5列表迭代器 {
public static void main(String[] args) {
//创建集合对象
List list = new ArrayList<>();
//添加元素
list.add("hello");
list.add("world");
list.add("java");
//通过list集合的listiterator()方法得到
// ListIterator lit = list.listIterator();
// while (lit.hasNext()){
// String s = lit.next();
// System.out.println(s);
// }
// while (lit.hasPrevious()){
// String s = lit.previous();
// System.out.println(s);
// }
//获取列表迭代器
ListIterator it = list.listIterator();
while(it.hasNext()){
String s= it.next();
if (s.equals("world")){
it.add("javaee");
}
}
System.out.println(list);
}
}
增强for循环
//增强for:简化数组和Collection集合的遍历
//·实现Iterator接口的类允许其对象成为增强型for语句的目标
//·它是JDK5之后出现的,其内部原理是一个Iterator迭代器
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
//增强for的格式
//·格式:
// for(元素数据类型变量名:数组或者Collection集合){
// 在此处使用变量即可,该变量就是元素
// }
public class day6增强for循环 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
for (int i :arr){
System.out.println(i);
}
System.out.println("--------------------");
String[] strArray = {"hello","world","java"};
for (String s:strArray){
System.out.println(s);
}
System.out.println("--------------------");
List list = new ArrayList<>();
list.add("hello");
list.add("world");
list.add("java");
for (String s:list){
System.out.println(s);
}
//内部原理是一个Iterator迭代器
for (String s:list){
if (s.equals("world")){
list.add("javaee");
}
}
System.out.println("--------------------");
Iterator it = list.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
System.out.println("-------------------");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("-------------------");
}
}
List集合的子类特点
List集合常用子类:ArrayList,linkedList ArrayList:底层数据结构是数组,查询快,增删慢 linkedList:底层数据结构是链表,查询慢,增删快
import java.util.ArrayList;
import java.util.Iterator;
import java.util.linkedList;
import java.util.List;
public class day9List集合的子类特点 {
public static void main(String[] args) {
List array = new ArrayList<>();
array.add("hello");
array.add("world");
array.add("java");
//迭代器
Iterator it = array.listIterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
//for循环
for (int i = 0; i < array.size(); i++) {
System.out.println(array.get(i));
}
//增强for
for(String s : array){
System.out.println(s);
}
System.out.println("----------------");
List linkedstring = new linkedList<>();
linkedstring.add("hello");
linkedstring.add("world");
linkedstring.add("java");
//增强for
for(String s : linkedstring){
System.out.println(s);
}
}
}
linkedList集合的特有功能
public void addFirst(E e) 在该列表开头插入指定的元素 public void addLast(E e) 将制定元素追加到此列表的末尾 public E getFirst() 返回此列表中的第一个元素 public E getLast() 返回此列表中的最后一个元素 public E removaFirst() 从此列表中删除并返回第一个元素 public E removaLast() 从此列表中删除并返回最后一个元素
import java.util.linkedList;
public class day10linkedList集合的特有功能 {
public static void main(String[] args) {
//创建集合对象
linkedList linkedlist = new linkedList<>();
linkedlist.add("hello");
linkedlist.add("world");
linkedlist.add("java");
//public void addFirst(E e) 在该列表开头插入指定的元素
linkedlist.addFirst("javase");
//public void addLast(E e) 将制定元素追加到此列表的末尾
linkedlist.addLast("javaee");
//public E getFirst() 返回此列表中的第一个元素
System.out.println(linkedlist.getFirst());
//public E getLast() 返回此列表中的最后一个元素
System.out.println(linkedlist.getLast());
//public E removaFirst() 从此列表中删除并返回第一个元素
System.out.println(linkedlist.removeFirst());
//public E removaLast() 从此列表中删除并返回最后一个元素
System.out.println(linkedlist.removeLast());
System.out.println(linkedlist);
}
}



