数组 VS 集合
数组很好,但缺点显而易见:它的长度不可变。而集合的长度可变。
集合不能直接存储基本数据类型。
泛型:用于限定集合中数据类型。
集合存储引用数据类型,但打印时不输出对象的地址值,而是输出具体值。打印展示时会使用[]将对象包裹起来。
import java.util.ArrayList;
public class arraylist {
public static void main(String[] args) {
// new 一个集合对象并指定泛型
// JDK7 以后版本后部分的泛型可以省略,但< >必须保留
ArrayList<String> list = new ArrayList();
System.out.println(list);
// 应当会输出 []
}
}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() //集合长度
list.add()
list.remove()
list.set(index,)
list.get(index)其中,E 是泛型类参数,用来限制数据类型;e 则是形参,即添加的数据内容。
示例:
import java.util.ArrayList;
public class arraylist {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
// 添加一个元素
list.add("a");
// 删除元素并使用一个变量接收布尔值结果
boolean result1 = list.remove("a");
boolean result2 = list.remove("b");
System.out.println(result1);
System.out.println(result2);
// 应当依次输出 true 与 false
}
}遍历:
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
System.out.println(str);
}小练习
集合的遍历
定义一个集合,添加字符串,并遍历集合。 展示格式要求为 [e1, e2, e3]。
import java.util.ArrayList;
public class arraylist {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("e1");
list.add("e2");
list.add("e3");
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("]");
}
}当然,这完全是个脱裤子放屁的方法。我们可以使用 Java 8 的 String.join 方法结合集合的 toString() 特性,效果是完全一样的:
System.out.println(list.toString());添加用户对象并判断是否存在
需求:
- main 方法定义一个集合,存入一个用户对象。用户属性为:id, username, password
- 要求:定义一个方法,根据 id 查找用户信息。存在返回 true,反之则返回 false
我们创建一个 User 类,使用标准的 JavaBean 类格式。
我们需要两个类,一个 main,一个 User。
User 类:
public class User {
private String id;
private String username;
private String password;
public User(String id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public User() {
}
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;
}
}main:
import java.util.ArrayList;
public class arraylist {
public static void main(String[] args) {
// 创建 User 对象并将其存入列表
ArrayList<User> list = new ArrayList<>();
User u1 = new User("akira", "zhangsan", "123456");
list.add(u1);
// 调用我们定义好的方法
boolean flag = contains(list, "akira");
System.out.println(flag);
}
// 遍历方法
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;
}
}补充
基本数据类型对应的包装类
由于集合不能直接存储基本数据类型,所以要转换为其对应的包装数据类型。不需要记,IDE 直接 tab 补全。
Comments NOTHING