*为什么需要集合框架?
因为数组的长度固定 所以不适合用于新增对象的时候
*什么时候使用?
在你不确定数据量有多少的时候
*集合框架是什么?
动态数组
-
回顾Java存储数据的方式有哪些?
1.Java变量 一次只能存储一个数据
2.数组----一次可以存储多个同类型的数据
3.oop对象---可以保存多个不同类型的数据
4.对象数组---可以存储多个同类型的对象,而每个对象可以存储多个不同的属性。
-
集合框架的作用:存储数据
1.集合框架中的2个顶层接口:Collection Map
Collection接口一次只能存储一个值
Map集合接口一次能存储2个值注意:Collection是接口,使用不能实例化,但是可以借助子类Collection接口下有三个子接口:List,Set,queue
①List 接口:有序,可以重复
List 接口下子类实现类:ArrayList | LinkedList | Vector
ArrayList:专用于查询操作。
LinkedList:专用于增删改。
ArrayList 有序的
LinkedList
Vector:用于swing(窗体)中的数据处理。线程也是安全的。
②Set 接口:无序,但是唯一
Set 接口下子类实现类:HashSet | TreeSet
-
创键 一个学生类 给定 name 与 age 添加数据
1. 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());
//包罗万象 杂乱无章
注意事项:存放的永远都是引用类型的数据。
因为如果存储的是基本类型,在添加进去之前会自动将基本类型的数据自动转成其所对应的封装类的类型2.其他介绍方法功能
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));//调用包含方法:是判断名字是否有相同
3.方法整理
size() 长度
add() 添加
get() 获取
remove() 移除
clear() 清空
isEmpty 是否为空
contains 是否包含
————————————————
版权声明:本文为CSDN博主「 ᯤ⁹ᴳ⁺⁵²º⋆এ」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_62898618/article/details/121666211
-
集合框架遍历方式
集合的for遍历方式 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>();4.通过泛型定义集合 并且实现多态,如下所示:
//给类创键一个任意属性的方法 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); }
public class Stu<T> {
T sid;
String sname;
}