前言
这真的是昨天学的内容,只是昨天学完了以后没来得及整理,下不为例
一、数组和集合
集合的存储空间是可变的,数组的存储空间不变,如果直接打印数组对象,那么打印的是数组对象的地址,所以需要调用方法,从而获取其值
二、ArrayList集合
1.定义
ArrayList是大小可变的数组实现,也就是说集合底层的实现原理还是数组。
ArrayList是引用数据类型
将ArrayList看作是容器,如果不定义具体的类型,那什么类型的数据元素他都可以装,但是为了使用方便,我们可以在其后面的加一个<>定义其盛装的数据类型
ArrayList list=new ArrayList();//任何类型都可以进去
ArrayList<String> list=new ArrayList();//字符串类型,需要注意的是,此处的类型必须是引用类型,例如int类型需要用Integer
2.构造方法
//1.无参构造方法
public ArrayList();
//2.有参构造方法
public ArrayList(int n);
关于ArrayList的长度,若是未指定长度
ArrayList list=new ArrayList;//初始化为0,但是加入第一个参数后容量为10;
ArrayList list=new ArrayList(20);//创建了一个容量为20的空列表
//无论开始时是多少,如果后面不够都会自动扩容
2.ArrayList方法
/*1)填加数据元素
add(element)和add(int index,E element)
*/
package ArrayList1;
import java.util.ArrayList;
public class DemoArrayList2 {
public static void main(String[] args) {
//容量为10,空参构造
ArrayList list=new ArrayList();
//调用add()方法
list.add('a');
list.add(123);
list.add("abc");
System.out.println(list);
ArrayList<Integer> list2=new ArrayList();
list2.add(1);
list2.add(2);
list2.add(3);
list2.add(2,4);
System.out.println(list2);
}
}
如果只是简单的add()填加某个数据元素,那会填加到尾部,如果加入一个索引就可以到任何位置,需要注意的是,ArrayList的索引也是从0开始
//2)删除:remove()
public static void testRemove()
{
ArrayList<String> list = new ArrayList();
list.add("123");
list.add("456");
list.add("789");
list.add("111");
list.add("222");
list.add("333");
list.add("444");
//public boolean remove(Object o)删除指定的元素,返回是否删除成功
boolean remove1 = list.remove("123");
System.out.println(remove1);
System.out.println(list);
//public E remove(int index)删除指定索引处的元素,返回被删除元素
String s = list.remove(2);
System.out.println(s);
System.out.println(list);
}
一般情况下,我们不会用布尔类型去接remove()的返回值,因为意义不大
//3)修改:set
public static void testset()
{
ArrayList<String> list = new ArrayList();
list.add("123");
list.add("456");
list.add("789");
list.add("111");
list.add("222");
list.add("333");
list.add("444");
//public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
String x = list.set(0, "xjl");
System.out.println(x);
System.out.println(list);
}
//4)获取get()
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println(stu.getName()+"..."+stu.getAge());
}
三、习题练习
//1.创建一个存储字符串的集合,存储三个字符串元素,使用程序实现在控制台遍历集合
public static void main(String[] args) {
ArrayList<String> list=new ArrayList();
list.add("123");
list.add("xjl");
list.add("xujialin");
list.add("222");
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i));
}
}
//2.创建一个存储学生对象的集合,使用程序实现在控制台遍历该集合
package ArrayList1;
import domain.Student;
import java.util.ArrayList;
public class DemoArrayList5 {
/*
思路:
1.定义一个学生类
2.创建学生对象
3.存入集合
4.遍历集合
*/
public static void main(String[] args) {
ArrayList<Student> list=new ArrayList();
Student stu1=new Student("张三","15");
Student stu2=new Student("李四","16");
Student stu3=new Student("王五","18");
list.add(stu1);
list.add(stu2);
list.add(stu3);
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println(stu.getName()+"..."+stu.getAge());
}
}
}
package ArrayList1;
import java.util.ArrayList;
public class DemoArrayList7 {
/*
需求:
创建一个存储String的集合,内部存储(test,张三,李四,test,test)字符串,删除所有的test字符串,删除后,将集合打印到控制台
思路:
1.创建一个String类型的集合
2.使用add()方法添加
3.使用remove()方法进行删除(循环删除),根据元素进行删除,只能删除元素中第一个
4.输出剩余字符串
*/
public static void main(String[] args) {
ArrayList<String> list = new ArrayList();
list.add("test");
list.add("张三");
list.add("李四");
list.add("test");
list.add("test");
for (int i = 0; i < list.size(); i++) {
String s=list.get(i);
//变量与常量进行比较,尽量让常量调用方法
if("test".equals(s))
{
list.remove(i);
i--;//前面元素删除完后,后面的元素会向前移动,所以需要删除
}
}
System.out.println(list);
}
}