回顾Java存储数据的方式有哪些?
1.Java变量 一次只能存储一个数据
2.数组----一次可以存储多个同类型的数据
3.oop对象---可以保存多个不同类型的数据
4.对象数组---可以存储多个同类型的对象,而每个对象可以存储多个不同的属性。
集合框架的作用:存储数据
集合框架中的2个顶层接口:Collection Map
Collection接口一次只能存储一个值
Map集合接口一次能存储2个值
由于Collection是接口,不能实例化,只能借助子类
Collection接口下有3个子接口:List Set queue
1.List 接口:有序,可重复的
2.Set 接口 :无序,唯一
List 接口下子类实现类:ArrayList | LinkedList | Vector
ArrayList:专用于查询操作。
LinkedList:专用于增加,删除,修改
Vector:用于swing(窗体)中的数据处理。-线程是安全的。Ser 接口下的子类:HashSet | TreeSet
ArrayList 有序的
LinkedList 杂乱无序的
创键 一个学生类 给定 name 与 age 添加数据
add 方法 添加方法 !!
需求:创建一个集合对象存储数据了 //利用ArrayList集合类创建一个容器存储数据 ArrayList list = new ArrayList(); //常用的方法 //1.获取集合长度 System.out.println(list.size()); //2.添加数据 list.add(1);//转成Integer类型 list.add(true); list.add(true); list.add("刘峰"); //创建一个学生 Student stu = new Student("谢文建","女"); list.add(stu); System.out.println(list.size());
注意事项:存放的永远都是引用类型的数据。
因为如果存储的是基本类型,在添加进去之前会自动将基本类型的数据自动转成其所对应的封装类的类型
介绍方法功能ArrayList list = new ArrayList(); 查看数据:get 根据下标获取值 从0开始 System.out.println(list.get(1)); //删除|移除remove list.remove(stu);//根据元素值删除 System.out.println(list.size()); list.remove(0);//根据下标删除 System.out.println(list.size()); // clear 清空集合中所有的数据 list.clear(); System.out.println(list.size()); list.add("sb"); //判断集合是否为空 isEmpty System.out.println(list.isEmpty()); //contians 包含 判断框架中是否包含某属性 System.out.println(list.contains("sb"));
使用包含 ,查询 类中属性必须重写equals方法
查询案例
ArrayList list = new ArrayList(); list.add(new Student("张三1", "男")); list.add(new Student("张三2", "男")); list.add(new Student("张三3", "男")); list.add(new Student("张三4", "男")); Student student = new Student("张三4", "男"); System.out.println(list.contains(student));调用包含方法 判读 名字是否有相同
方法整理 !!
size() 长度
add() 添加
get() 获取
remove() 移除
clear() 清空
isEmpty 是否为空
contains 是否包含集合框架遍历方式
集合的遍历方式 ArrayList list = new ArrayList(); list.add(1);//转成Integer类型 list.add(true); list.add(true); list.add("刘峰"); //1.for循环 for(int i = 0;i<list.size();i++) { System.out.println(list.get(i)); } System.out.println("-----"); //foreach 循环 for(Object obj : list) { System.out.println(obj); } 迭代器----集合框架中遍历元素的最常用的一种方式。 调用方法将集合中的数据存放到迭代器容器中,通过迭代器容器提供特有的遍历方式。 Iterator its = list.iterator(); while(its.hasNext()) {//its.hasNext() 如果迭代器容器中存在下一条数据 //直接输出这条数据 //获取当前的下一条数据 next(); System.out.println(its.next()); }
集合框架的泛型使用
1.集合存储数据任何类型都可以(Object)
* 2.泛型目的:约束集合只能存储一种类型的数据
* 3.定义泛型在创建集合框架时进行定义
* 比如规定ArrayList存储数据时只能存储字符串
* ArrayList<String> list = new ArrayList<String>();
* ArrayList<Student> list = new ArrayList<Student>();2.通过泛型定义集合 并且实现多态
演示 给类创键一个任意属性的方法 !!
package com.zking.test; public class Stu<T> { T sid;这个属性将来调用者 输入什么属性他就是什么类型 String sname; }
演示二 给 ArrayList集合框架约束只能存储String类型数据
List<String> list = new ArrayList<String>(); list.add(1);//错误的 只能存储字符串类型的数据 list.add("中国"); list.add("-_-");
接第一个演示 !!!
创建一个学生类(某种情况下 学号:int)(某种情况下 学号:String) Stu<String> stu = new Stu<String>(); stu.sid = "111"; Set 无序 唯一 Set set = new HashSet(); set.add("123"); set.add("123"); set.add("sb"); set.add("sb2"); set.add("nb"); set.add("123"); set.add("123"); System.out.println(set.size()); for (Object object : set) { System.out.println(object); }