本学习笔记的图片和题目均来源于黑马程序员,本人小白一枚,如有错误请及时指出,感谢感谢
集合
1.集合的特点
集合可以存引用数据类型和包装类
2.集合和数组的对比
长度和存储类型不同
3.集合的种类
4.ArrayList
泛型:限定集合中存储数据的类型
ArrayList<String> list = new ArrayList<String>();
此时我们创建的是ArrayList的对象,而ArrayList是java已经写好的一个类
打印对象不是地址值,而是集合中存储数据内容
在展示的时候会拿[]把所有的数据进行包裹
5.ArrayList的成员方法
import java.util.ArrayList;
public class demo1 {
public static void main(String[] args) {
//创建一个集合
ArrayList <String>list=new ArrayList<>();
//添加元素
list.add("aaa");
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.println(list);//[aaa, aaa, bbb, ccc]
//删除元素
boolean result=list.remove("aaa");
System.out.println(result);//true
System.out.println(list);//[aaa, bbb, ccc]
String result1=list.remove(1);
System.out.println(result1);//bbb
System.out.println(list);//[aaa, ccc]
//修改元素
String result2=list.set(1,"aaa");
System.out.println(result2);//ccc
System.out.println(list);//[aaa, aaa]
//查询元素
String result3=list.get(1);
System.out.println(result3);//aaa
//遍历
for(int i=0;i<list.size();i++){
String result4=list.get(i);
System.out.println(result4);//aaa aaa
}
}
}
案例一
定义一个集合,添加字符串,并进行遍历
遍历格式参照:[元素1,元素2,元素3]
import java.util.ArrayList;
public class demo2 {
public static void main(String[] args) {
//创建集合
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.print("]");//[aaa,bbb,ccc]
}
}
案例二
定义一个集合,添加整数,并进行遍历
遍历格式参照:[元素1,元素2,元素3]
import java.util.ArrayList;
public class demo3 {
public static void main(String[] args) {
//创建集合
ArrayList<Integer>list=new ArrayList<>();
//添加元素
list.add(1);
list.add(2);
list.add(3);
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.print("]");//[1,2,3]
}
}
案例三
添加学生对象并遍历
需求:定义一个集合,添加一些学生对象,并进行遍历
学生类的属性为:姓名,年龄。
public class Student {
private String name;
private int age;
public Student(){}
public Student(String name,int age){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;
}
}
import java.util.ArrayList;
public class demo4 {
public static void main(String[] args) {
//创建集合
ArrayList<Student>list=new ArrayList<>();
//创建学生对象
Student s1=new Student("王明",19);
Student s2=new Student("李四",20);
//添加元素
list.add(s1);
list.add(s2);
//遍历
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).getName()+","+list.get(i).getAge());//王明,19 李四,20
}
}
}
案例四
添加学生对象并遍历
需求:定义一个集合,添加一些学生对象,并进行遍历
学生类的属性为:姓名,年龄。
要求:对象的数据来自键盘录入
import java.util.ArrayList;
import java.util.Scanner;
public class demo5 {
public static void main(String[] args) {
//创建集合
ArrayList<Student>list=new ArrayList<>();
//键盘录入
Scanner sc=new Scanner(System.in);
for(int i=0;i<3;i++){
System.out.println("请输入学生的姓名和年龄");
String name1=sc.next();
int age1=sc.nextInt();
Student stu1=new Student(name1,age1);
//添加
list.add(stu1);
}
//遍历输出
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).getName()+" "+list.get(i).getAge());
}
}
}
案例五
添加用户对象并判断是否存在
需求:
1,main方法中定义一个集合,存入三个用户对象。
用户属性为:id, username,password
2,要求:定义一个方法,根据id查找对应的用户信息。
如果存在,返回true
如果不存在,返回false
public class User {
private String id;
private String username;
private int password;
User(){}
public User(String id, String username, int password) {
this.id = id;
this.username = username;
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
}
import java.util.Scanner;
import java.util.ArrayList;
public class demo6 {
public static void main(String[] args) {
//创建集合
ArrayList<User>list=new ArrayList<>();
//录入数据并添加到集合中
User user1=new User("one001","张三",01234);
User user2=new User("two002","李四",123456);
User user3=new User("three003","王五",23456);
list.add(user1);
list.add(user2);
list.add(user3);
boolean flag=search("one001",list);
System.out.println(flag);//true
}
//判断方法
public static boolean search(String id,ArrayList<User>list){
for(int i=0;i<list.size();i++){
if(list.get(i).getId().equals(id)){
return true;
}
}
return false;
}
}
案例六
1.main方法中定义一个集合,存入三个用户对象。
用户属性为:id, username,password
2.要求:定义一个方法,根据id值找对应的用户信息
如果存在,返回索引
如果不存在,返回-1
import java.util.Scanner;
import java.util.ArrayList;
public class demo7 {
public static void main(String[] args) {
//创建集合
ArrayList<User>list=new ArrayList<>();
//录入数据并添加到集合中
User user1=new User("one001","张三",01234);
User user2=new User("two002","李四",123456);
User user3=new User("three003","王五",23456);
list.add(user1);
list.add(user2);
list.add(user3);
int flag=search("three003",list);
System.out.println(flag);//2
}
//判断方法
public static int search(String id,ArrayList<User>list){
for(int i=0;i<list.size();i++){
if(list.get(i).getId().equals(id)){
return i;
}
}
return -1;
}
}
案例七
添加手机对象并返回要求的数据
需求:
定义Javabean类:Phone
Phone属性:品牌,价格。
main方法中定义一个集合,存入三个手机对象。
分别为:小米,1000。苹果,8000。锤子2999。
定义一个方法,将价格低于3000的手机信息返回。
如果我们要返回多个数据,可以把这些数据先放到一个容器当中,再把容器返回 比如使用 集合,数组
import java.util.ArrayList;
public class demo8 {
public static void main(String[] args) {
//创建集合
ArrayList<Phone>list=new ArrayList<>();
//录入数据并添加到集合中
Phone phone1=new Phone("小米",1000);
Phone phone2=new Phone("苹果",8000);
Phone phone3=new Phone("锤子",2999);
list.add(phone1);
list.add(phone2);
list.add(phone3);
//遍历
for(int i=0;i<getPhoneInfo(list).size();i++){
System.out.println(getPhoneInfo(list).get(i).getPrice()+" "+getPhoneInfo(list).get(i).getBrand());
}
//
/*for(int i=0;i<list.size();i++){
boolean flag=search(list.get(i).getPrice());
if(flag){
System.out.println(list.get(i).getBrand()+" "+list.get(i).getPrice());
}
}*/
}
//判断方法
/*public static boolean search(int price){
if(price<3000){
return true;
}else{
return false;
}
}*///注释掉的是自己写的
//如果我们要返回多个数据,可以把这些数据先放到一个容器当中,再把容器返回
//集合 数组
//使用集合
public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone>list){
ArrayList<Phone>list1=new ArrayList<>();
for(int i=0;i<list.size();i++){
int price=list.get(i).getPrice();
if(price<3000){
list1.add(list.get(i));
}
}
return list1;
}
}