为什么有集合?
自动扩容
数组:长度固定,可以存基本数据类型和引用数据类型
集合:长度可变,可以存引用数据类型,基本数据类型的话需要包装类
ArrayList
public class studentTest {public static void main(String[] args) {ArrayList<String> list=new ArrayList<>();boolean res=list.add("aaa");System.out.println(res); //trueSystem.out.println(list);//[aaa]list.add("bbb");list.add("cccc");System.out.println(list); //[aaa, bbb, cccc]//删除boolean res1=list.remove("aaa");System.out.println(res1); //trueSystem.out.println(list);//[bbb, cccc]//根据索引删除,返回被删除元素String str=list.remove(0);System.out.println(str);//bbb//修改,返回旧值String res2=list.set(0,"000");System.out.println(res2);//ccccSystem.out.println(list);//[000]//查询String str3=list.get(0);System.out.println(str3);//000//获取长度System.out.println(list.size());//1}}
案例 创建集合,添加元素,遍历
public class studentTest {public static void main(String[] args) {ArrayList<String> list=new ArrayList<>();list.add("bhjhsd");list.add("dwshv");list.add("fs2552");System.out.print("[");for (int i = 0; i <list.size() ; i++) {if(i==list.size()-1){System.out.println(list.get(i)+"]");}else{System.out.print(list.get(i)+", ");}}}}
案例 定义一个集合 添加数字,遍历。
包装类
public class studentTest {public static void main(String[] args) {ArrayList<Integer> list=new ArrayList<>();list.add(1);list.add(3);list.add(5);System.out.print("[");for (int i = 0; i <list.size() ; i++) {if(i==list.size()-1){System.out.println(list.get(i)+"]");}else{System.out.print(list.get(i)+", ");}}
//[1, 3, 5]}}
案例 添加学生类对象
//存储学生信息
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;}}
public class studentTest {public static void main(String[] args) {ArrayList<Student> list=new ArrayList<>();Student s1=new Student("lisa",15);Student s2=new Student("bob",18);Student s3=new Student("anna",17);list.add(s1);list.add(s2);list.add(s3);for (int i = 0; i < list.size(); i++) {Student stu=list.get(i);System.out.println(stu.getName()+", "+stu.getAge());}}
//lisa, 15
//bob, 18
//anna, 17}
键盘录入学生信息:
public class studentTest {public static void main(String[] args) {ArrayList<Student> list=new ArrayList<>();Scanner sc=new Scanner(System.in);for (int i = 0; i <3 ; i++) {Student stu =new Student();System.out.println("输入学生姓名");String name=sc.next();System.out.println("输入学生年龄");int age=sc.nextInt();stu.setAge(age);stu.setName(name);list.add(stu);}for (int i = 0; i <list.size() ; i++) {Student s=list.get(i);System.out.println(s.getName()+", "+s.getAge());}
//hbkjsd, 12
//dv, 15
//dvg, 13}}
案例 添加用户对象并判断是否存在
public class User {private String id;private String username;private String password;public User() {}public User(String id, String username, String 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 String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
public class userTest {public static void main(String[] args) {ArrayList<User> list =new ArrayList<>();User u1=new User("001","zhangsan","123456");User u2=new User("002","lisi","12354526");User u3=new User("003","wangwu","123dfssdf6");list.add(u1);list.add(u2);list.add(u3);System.out.println(contain(list,"002"));}public static boolean contain(ArrayList<User> list,String id){for (int i = 0; i <list.size() ; i++) {boolean res=list.get(i).getId().equals(id);if(res){return true;}}return false;}}
更改,存在返回索引,不存在返回-1
public class userTest {public static void main(String[] args) {ArrayList<User> list =new ArrayList<>();User u1=new User("001","zhangsan","123456");User u2=new User("002","lisi","12354526");User u3=new User("003","wangwu","123dfssdf6");list.add(u1);list.add(u2);list.add(u3);System.out.println(contain(list,"002"));}public static int contain(ArrayList<User> list,String id){for (int i = 0; i <list.size() ; i++) {boolean res=list.get(i).getId().equals(id);if(res){return i;}}return -1;}}
案例 创建手机对象,低于价格的返回
//把价格低于3000的返回
public class phoneTest {public static void main(String[] args) {ArrayList<Phone> list =new ArrayList<>();Phone p1=new Phone("xiaomi",1000);Phone p2=new Phone("pingguo",8000);Phone p3=new Phone("xchuizi",2999);list.add(p1);list.add(p2);list.add(p3);ArrayList<Phone> reslist=getPhoneInfo(list);for (int i = 0; i < reslist.size(); i++) {Phone p=reslist.get(i);System.out.println(p.getBrand()+", "+p.getPrice());}}public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list){ArrayList<Phone> reslist=new ArrayList<>();for (int i = 0; i < list.size(); i++) {Phone p=list.get(i);int price=p.getPrice();if(price<3000){reslist.add(p);}}return reslist;}}