Java学习笔记9.——ArrayList集合
Arraylist的基本使用和集合联系
文章目录
前言
集合和数组差不多,只不过集合是自动扩容的,所以本节的知识点不多,只有几个跟着写的案例。
本节内容比较少和短。
一、集合
1.集合是什么
集合和数组一样是一个容器,存放数据。不过集合的容器是自动扩容的,数组的容器是固定的。集合只能存放引用数据类型,如果想存储基本数据类型就需要把这些打包成一个包装类才可以。数组可以存放基本数据类型,也可以存放引用数据类型,比如字符串,对象等。
今天学的是ArrayList集合,其格式如下
ArrayList list = new Arraylist<>();
其中类似于数组的int[],就是定义集合的数据类型,需要注意E只能是引用型数据类型,基本数据类型不可以的。
ArrayList<E> list = new Arraylist<>();
System.out.println(list);
输出结果:[]
感觉这个和STringBuilder类似,都是经过处理后直接输出结果,而不是对象地址。当然ArrayList的结果是由[]包括的,当里面没有数据的时候就只有[]。
ArrayList常用的几种方法,增删改查
方法名 | 说明 |
---|---|
boolean add(E e) | 添加元素,返回值表示是否添加成功 |
boolean remove(E e) | 删除指定元素,返回值表示是否删除成功 |
E remove(int index) | 删除指定索引的元素,返回被删除的元素 |
E set(int index,E e) | 修改指定索引的元素,返回原来的元素 |
E get(int index) | 获取指定索引的元素 |
int size() | 集合的长度,也就是集合中元素的个数 |
package ArrayList;
import java.util.ArrayList;
public class ListTest1 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.println(list);
boolean aaa = list.remove("aaa");
System.out.println(aaa);
String remove = list.remove(0);
System.out.println(remove);
System.out.println(list);
String ddd = list.set(0, "ddd");
System.out.println(ddd);
System.out.println(list);
list.add("aaa");
list.add("bbb");
list.add("ccc");
String s = list.get(3);
System.out.println(s);
System.out.println(list);
//遍历
for (int i = 0; i < list.size(); i++) {
String s1 = list.get(i);
System.out.println(s1);
}
System.out.println(list.size());
}
}
二、综合练习
1.添加字符串
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.print("[");
for (int i = 0; i < list.size(); i++) {
if (i == list.size()-1){
System.out.print(list.get(i));
}else {
System.out.print(list.get(i)+",");
}
}
System.out.println("]");
2.添加数字
需求:定义一个集合,添加数字,并进行遍历。遍历格式参照:[元素1,元素2,元素3]。
其中
byte包装类Byte
short Short
char Character
int Interger
long Long
float Float
double Double
boolean Boolean
3.添加学生对象
需求:定义一个集合,添加一些学生对象,并进行遍历
学生类的属性为:姓名,年龄。
学生类,因为集合里添加学生对象,所以需要创建一个学生javabean类,然后创建对象。
public class Student {
private String name;
private String age;
public Student(){}
public Student(String name,String age){
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName(){
return name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
测试类
public static void main(String[] args) {
Student student1 = new Student("张三","12");
Student student2 = new Student("李四","11");
Student student3 = new Student("王麻子","10");
ArrayList<Student> list = new ArrayList<>();
list.add(student1);
list.add(student2);
list.add(student3);
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
System.out.println(student.getName()+" "+student.getAge());
}
}
1.对象数据来自键盘录入
public static void main(String[] args) {
Student s1 = in();
Student s2 = in();
Student s3 = in();
ArrayList<Student> list = new ArrayList<>();
list.add(s1);
list.add(s2);
list.add(s3);
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
System.out.println(student.getName()+" "+student.getAge());
}
}
//数据录入
public static Student in(){
Scanner sc = new Scanner(System.in);
String name = null;
String age = null;
System.out.println("请输入姓名");
name = sc.next();
System.out.println("请输入年龄");
age = sc.next();
Student student = new Student(name,age);
return student;
}
4.添加用户并判断
需求:
1, main方法中定义一个集合,存入三个用户对象。
用户属性为: id,username,password
公
2,要求:定义一个方法,根据id查找对应的用户信息。
如果存在,返回true
如果不存在,返回false
package ArrayList;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentTwoList1 {
public static void main(String[] args) {
//需求:
//1, main方法中定义一个集合,存入三个用户对象。
//用户属性为: id,username,password
//公
//2,要求:定义一个方法,根据id查找对应的用户信息。
//如果存在,返回true
//如果不存在,返回false
ArrayList<StudentTwo> list = new ArrayList<>();
for (int i = 0; i < 3; i++) {
StudentTwo s = new StudentTwo();
Scanner sc = new Scanner(System.in);
System.out.println("请输入id");
int id = sc.nextInt();
System.out.println("请输入名字");
String name = sc.next();
System.out.println("请输入人密码");
String pwd = sc.next();
s.setId(id);
s.setUserName(name);
s.setPassword(pwd);
list.add(s);
}
boolean flag = chek(list, 3);
if (flag){
System.out.println("存在"+flag);
}else {
System.out.println("不存在"+flag);
}
}
public static boolean chek(ArrayList<StudentTwo> list,int index){
boolean flag =false;
for (int i = 0; i < list.size(); i++) {
if (index == list.get(i).getId()){
flag = true;
break;
}
}
return flag;
}
}
1.返回索引
要求都一样,只是返回值为索引
//2,要求:定义一个方法,根据id查找对应的用户信息。
//如果存在,返回索引
//如果不存在,返回-1
public static int chek(ArrayList<StudentTwo> list,int index){
for (int i = 0; i < list.size(); i++) {
if (index == list.get(i).getId()){
return i;
}
}
return -1;
}
5.添加手机对象并返回要求的数据
添加手机对象并返回要求的数据
需求:
定义Javabean类: PhonePhone属性:品牌,价格。
main方法中定义一个集合,存入三个手机对象。分别为:小米,1000。苹果,8000。锤子2999。定义一个方法,将价格低于3000的手机信息返回。
package ArrayList.Phone;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
//添加手机对象并返回要求的数据
//需求:
//定义Javabean类: PhonePhone属性:品牌,价格。
//main方法中定义一个集合,存入三个手机对象。分别为:小米,1000。苹果,8000。锤子2999。定义一个方法,将价格低于3000的手机信息返回。
ArrayList<Phone> list = new ArrayList<>();
Phone p1 = new Phone("小米",1000);
Phone p2 = new Phone("苹果",8000);
Phone p3 = new Phone("锤子",2999);
list.add(p1);
list.add(p2);
list.add(p3);
ArrayList<Phone> back = back(list);
for (int i = 0; i < back.size(); i++) {
System.out.println(back.get(i).getBrand()+" "+back.get(i).getPrice());
}
}
public static ArrayList<Phone> back(ArrayList<Phone> list){
ArrayList<Phone> list1 = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getPrice()<3000){
list1.add(list.get(i));
}
}
return list1;
}
}
总结
多练习,集合本质和数组是一样的,唯一不同的就是自动扩容。
多想想知识点,实践知识点,知行合一。