数组和集合的区别
集合长度可变,数组长度固定
集合只能存引用数据类型,基本数据类型需先转化成包装类;数组可以存引用数据类型或基本数据类型
ArrayList
定义在java.util包下,使用需要导包
import java.util.ArrayList;
public class ArrayListDemo1{
public static void main(String[]args){
//创建集合的对象
//泛型:限定集合中储存数据的类型
ArrayList<String>list=newArrayList<>();
System.out.println(list);
}
}
打印对象不是地址值,而是集合中储存的数据内容
在展示内容时会用[ ]对数据进行包裹
ArrayList成员方法
增 删 改 查
方法名 | 说明 |
boolean add() | 添加元素,返回值表示是否添加成功 |
boolean remove() | 删除指定元素,返回值表示是否添加成功 |
E remove(int index) | 删除指定索引的元素,返回被删除的元素 |
E set(int index,E) | 修改指定索引下的元素,返回原来的元素 |
E get(int index) | 获取指定索引的元素 |
int size() | 集合的长度,即集合中元素的个数 |
示例代码
public class ArrayListDemo02 {
public static void main(String[] args) {
//创建集合
ArrayList<String> array = new ArrayList<String>();
//添加元素
array.add("hello");
array.add("world");
array.add("java");
//public boolean remove(Object o):删除指定的元素,返回删除是否成功
// System.out.println(array.remove("world"));
// System.out.println(array.remove("javaee"));
//public E remove(int index):删除指定索引处的元素,返回被删除的元素
// System.out.println(array.remove(1));
//IndexOutOfBoundsException
// System.out.println(array.remove(3));
//public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
// System.out.println(array.set(1,"javaee"));
//IndexOutOfBoundsException
// System.out.println(array.set(3,"javaee"));
//public E get(int index):返回指定索引处的元素
// System.out.println(array.get(0));
// System.out.println(array.get(1));
// System.out.println(array.get(2));
//System.out.println(array.get(3)); //?????? 自己测试
//public int size():返回集合中的元素的个数
System.out.println(array.size());
//输出集合
System.out.println("array:" + array);
}
}
练习一定义一个集合,添加字符串,并进行遍历
方法一
public ststic void main(String[]args){
ArrayList<String>list=new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.print("[");
for(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("]");
}
}
方法二利用StringBulider
public class work{
public static void main(String[] args) {
ArrayList <String>list=new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
StringBuilder sb=new StringBuilder();
sb.append("[");
for (int i = 0; i < list.size(); i++) {
if (i==list.size()-1){
sb.append(list.get(i));
}else {
sb.append(list.get(i)+",");
}
}
sb.append("]");
String str=sb.toString();
System.out.println(str);
基本数据
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
练习二 定义一个集合,添加数字,并进行遍历,格式参照:[1,2,3];
import java.util.ArrayList;
public class work {
public static void main(String[] args) {
ArrayList<Integer>list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
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("]");
}
}
练习三:添加学生对象并遍历。
定义一个集合,添加一些学生对象,并进行遍历,学生类的属性为:姓名,年龄
package demo;
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;
}
}
package demo;
import java.io.CharArrayReader;
import java.util.ArrayList;
public class studentTest{
public static void main(String[] args) {
ArrayList <student>list=new ArrayList<>();
student s1=new student("zhangsan",22);
student s2=new student("wangwu",23);
student s3=new student("lisi",28);
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());
}
}
}
若为键盘录入学生信息,
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ArrayList<student>list =new ArrayList<>();
//键盘录入学生对象
Scanner sc=new Scanner(System.in);
//最初集合长度为0若i<list.size,则不执行
for (int i = 0; i < 3; i++) {
student s=new student();
System.out.println("请输入学生姓名");
String name=sc.next();
System.out.println("请输入学生年龄");
int age=sc.nextInt();
//把name和age赋值给学生对象
s.setAge(age);
s.setName(name);
//把学生对象添加到集合中
list.add(s);
}
//遍历
for (int i = 0; i < list.size(); i++) {
student stu=list.get(i);
System.out.println(stu.getAge()+","+stu.getName());
}
}
}
练习四判断用户对象是否存在,main方法中定义一个集合,存入三个用户对象,用户属性为:id,username,password,定义一个方法根据id查找对应的用户信息,存在返回ture,不存在返回false
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;
}
}import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//创建集合
ArrayList<user>list =new ArrayList<>();
//创建用户对象
user u1=new user("123","zhangsan","123456");
user u2=new user("123","lisi","123456");
user u3=new user("123","wamhwu","123456");
//将用户对象添加到集合中
list.add(u1);
list.add(u2);
list.add(u3);
//调用方法查看id是否存在
boolean result=contains(list,"123");
System.out.println(result);
}
//需要list和id来创建方法,需要返回值
public static boolean contains(ArrayList<user>list,String id){
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getId().equals(id)){
return true;
}
}
return false;
}
}