1 A_One
* 对象数组:存储的元素为引用类型
*
* 集合类之ArrayList2 B_Student作为学生类
* 自动生成的方法:
* 代码区域右键--Source--Genrate Constructors from Superclass 无参构造方法
* 代码区域右键--Source--Genrate Constructors using feilds 有参构造方法
* 代码区域右键--Source--Genrate GetterS/Setterspublic class B_Student { private String name; private int age; public B_Student(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
2 B_StudentDemo作为学生测试类
* 对象数组实例
* 创建一个学生数组,存储三个学生对象并遍历
*
* 分析:
* A:定义学生类
* B:创建学生数组
* C:创建学生对象
* D:把学生对象作为元素赋值给学生数组
* E:遍历学生数组* 对象数组的内存图---图解?
public class B_StudentDemo { public static void main(String[] args) { // TODO Auto-generated method stub //创建学生数组 B_Student [] stu=new B_Student[3]; //创建学生对象 B_Student s1=new B_Student("张三",18); B_Student s2=new B_Student("李四",28); B_Student s3=new B_Student("王五",38); //把学生对象作为元素赋值给学生数组 stu[0]=s1; stu[1]=s2; stu[2]=s3; //遍历学生数组 for(int i=0;i<stu.length;i++){ B_Student s=stu[i]; System.out.println(s.getName()+"-----"+s.getAge()); } } }
3 C_myArrayList
为什么会出现集合类?
* 我们学习的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象来描述的
* 为了方便对多个对象进行操作,我们必须对这个多个对象进行存储,而想要对多个对象进行存储,
* 就不能是一个基本变量,而应该是一个容器类型的变量
* 到目前为止,我们学习过了哪些容器类型?StringBuilder、数组
* StringBuilder只能是一个字符串类型,不能满足我们的需求
* 所以我们目前只能选择数组了,也就是我们前面学习过的数组对象
* 但是,数组的长度是固定的,适应不了变化的需求,那么我们该如何选择呢?
* 这个时候,Java就给咱们提供了集合类供我们使用。
*
* 集合类特点:长度可变、ArrayList
*
* ArrayList<E> :
* 大小可变数组的实现
* <E>:
* 一种特殊的数据类型,也叫泛型
* 怎么用:在出现这个E的地方,我们使用引用数据类型替换即可(数组、类、接口)。
* 举例:ArrayList<String> ArrayList<Student>
*
*
* 构造方法:
* ArrayList()
*
* 成员方法:
* 添加元素:
* public boolean add(E e)//添加元素
* public void add(int i,E e)//在指定的索引处添加一个元素
*
* 获取元素:
* public E get(int index);返回指定索引处的元素
*
* 集合长度:
* public int size();返回集合中的元素的个数
*
* 删除元素:
* public E remove(int index);删除指定索引的元素 , 返回该删除的元素
* public boolean remove(Object o);删除指定的元素 , 返回是否成功
*
* 修改元素:
* public E set(int index,E e);修改指定索引处的元素 , 返回被修改的元素
*
*public class C_myArrayList { public static void main(String[] args) { ArrayList<String> array = new ArrayList<String>(); System.out.println(array); //得到空数组 [] // 1.添加 // 添加元素 public boolean add(E e) array.add("Hello"); System.out.println(array.add("kk")); //返回boolean类型的true, 不常用,会加元素即可 System.out.println(array); //返回数组 [Hello,kk] System.out.println("--------------------------------------"); // 插入元素 public void add(int i,E e) array.add(1, "Android插入"); //不能越界 否则报错,,当index>=3之后越界 System.out.println(array); //[Hello, Android插入, kk]即插入成功到索引为1的地方, System.out.println("------------------------------------------------"); // 2.获取 //public E get(int index);返回指定索引处的元素 array.add("hello"); array.add("world"); array.add("java"); System.out.println("get(0)"+array.get(0)); //get(0)Hello System.out.println("get(1)"+array.get(1));//get(1)安卓插入 System.out.println("get(2)"+array.get(2)); //get(2)kk // 3.长度 System.out.println("--------------------------------------"); System.out.println("size():"+array.size()); //6 System.out.println(array); System.out.println("--------------------------------------"); // 4.删除 // public E remove(int index);删除指定索引的元素 , 返回该删除的元素 array.remove(0);//一般就是这样用,删除hello,不返回什么 array.remove("kk");//或者这样用,直接删除元素java System.out.println("目前的集合内容:"+array); //[Android插入, hello, world, java] // System.out.println("remove():"+array.remove(0));//删除Hello ,返回被删除的元素:Hello // public boolean remove(Object o);删除指定的元素 , 返回是否成功 System.out.println("remove()—java:"+array.remove("java"));//删除java 返回true,因为java有在里面 System.out.println("remove()-java:"+array.remove("java"));//false 已经被删没了 所以false System.out.println("--------------------------------------"); // 5.修改 // public E set(int index,E e);修改指定索引处的元素 , 返回被修改的元素 System.out.println(array); //[Android插入, hello, world] array.set(0, "安卓插入被修改");//一般是这样用,不需要输出什么 // System.out.println("set():"+array.set(0, "gun"));//修改0索引位置, 即返回被修改的元素: Android插入 System.out.println("array:"+array); //array:[安卓插入被修改, hello, world] } }
4 D_myArrayList
*
* ArrayList集合的遍历
* 通过get()和size() 配合实现补充:看泛型是什么类型,在遍历时就用什么类型接收,比如下面就是用String接收
public class C_myArrayList2 { public static void main(String[] args) { // TODO Auto-generated method stub //创建集合对象 ArrayList<String> array= new ArrayList<String>(); array.add("1"); array.add("2"); array.add("3"); // 如何知道集合中元素的个数呢?--size()方法 // 调用get(int i) 方法获取集合中的元素 for(int i=0;i<array.size();i++){ System.out.println(array.get(i)); } System.out.println("-------"); // 最标准的写法 for(int i=0;i<array.size();i++){ String s = array.get(i); //字符串就可以做需要的操作了 System.out.println(s); } } }
5 E_myArrayList
* ArrayList 集合的练习
*
* 存储字符串并遍历:
* 创建集合对象 , 使添加字符串元素,遍历集合
*
* 给一个字符串数组:{"张三丰","宋远桥","张无忌","殷梨亭","张翠山","莫声谷"},将数组中的元素添加到集合中,并把所有的姓张的人员打印到控制台
*
* 定义字符串数组:
* 创建集合对象
* 遍历字符串数组,将每一个元素添加到集合
* 遍历集合
* 验证是否”张“姓开头,是则输出(字符串的startsWith方法)public class C_myArrayList3 { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> array=new ArrayList<String>(); // 1.练习1 array.add("你好"); array.add("你好1"); array.add("你好2"); array.add("你好3"); for(int i=0;i<array.size();i++){ String s = array.get(i); //因为集合的泛型是String类型,所以用String类型接收 System.out.println(s); } System.out.println("---------------"); // 2.练习2 String []str={"张三丰","宋远桥","张无忌","殷梨亭","张翠山","莫声谷"}; // 遍历数组 加到集合 for(int i=0;i<str.length;i++){ array.add(str[i]); } // 遍历集合 for(int i=0;i<array.size();i++){ String s=array.get(i); if(s.startsWith("张")){ System.out.print(s+"\t"); } } } }
6 F_myArrayList
* 存自定义对象并遍历
*
*
* 分析
* A:定义学生类
* B:创建集合对象
* C:创建学生对象
* D:把学生对象作为元素添加到集合中
* E:遍历集合
*public class C_myArrayList4 { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<B_Student> array = new ArrayList<B_Student>(); //使用之前定义的学生类 //创建学生对象 B_Student s1 = new B_Student("彭于晏",25); B_Student s2 = new B_Student("吴彦祖",23); B_Student s3 = new B_Student("迪丽热巴",27); //把学生对象作为元素添加到集合中去 array.add(s1); array.add(s2); array.add(s3); //遍历集合元素 for(int i=0;i<array.size();i++){ B_Student stu = array.get(i); //这里就用B_Student类型来接收了 System.out.println(stu.getName()+"------"+stu.getAge());//一般都是通过get方法来输出对象属性值 } } }
JavaSE_day17(eclipse自动生成无参有参getter与setter方法快捷,对象数组的存储的内存图图解,集合类的增删改查,集合类的遍历,集合类的练习)
于 2023-04-03 09:42:48 首次发布