import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class User{
private String name;
//无参构造函数
public User(){}
//一个参数的构造函数
public User(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}
class Student extends User{
private String name;
public Student(){}
public Student(String name){
this.name = name;
}
public String getName(){
return name;
}
}
public class Test{
private static final List<User> USERS = create();
//不希望将数据暴露出去,所以用private进行修饰,表示私有
private static List<User> create() {
//定义了三个User类的对象,并且将这三个对象存入到集合中
User u1 = new User("BO");
User u2 = new User("SUN");
User u3 = new User("SUN");
Student s4 = new Student("Nefertari");
List<User> users = new ArrayList<>();
users.add(u1);
users.add(u2);
users.add(u3);
users.add(s4); //向列表内加入了一个User子类对象
return users;
}
public static void main(String[] args) {
getSize(); //获取大小
//下面的两种方式的输出是一样的,只不过使用的实现方法不一样
forByIndex();
forEach();
updateElement();
addRepeatElement();
removeElement();
listToArray();
arrayToList();
}
private static void addSubClass(){
//加入的对象只能是目标泛型或者目标泛型的子类
USERS.add(new Student());
}
private static void getSize(){
//输出List的大小,并且最后输出列表是不是空的
System.out.println("集合的大小为:" + USERS.size() + " ");
System.out.println("集合是否为空:" + USERS.isEmpty());
System.out.println("\n");
}
//基于索引的for循环
private static void forByIndex(){
System.out.println("(for)目前集合内的所包含的名字有");
for (int i = 0; i < USERS.size(); i++) {
//遍历输出User的名字
System.out.print(USERS.get(i).getName() + " ");
}
System.out.println("\n");
}
//基于foreach的循环语句
//相对而言foreach语句的效率更高
private static void forEach(){
//遍历USERS中的User类的对象
System.out.println("(foreach)目前集合内的所包含的名字");
for(User u: USERS){
System.out.print(u.getName() + " ");
}
System.out.println("\n");
}
//更新元素的方法
private static void updateElement(){
//集合中保存的不是对象本身,而是对象引用的地址
User user = USERS.get(0);
//我们可以看到这个get出来的实际上就是那个存内容的地址
user.setName("ZHANG");
//实际上更改的地址里的内容,相当于改变了集合内的内容
System.out.println("更新元素之后的集合内包含的名字");
for(User u : USERS){
System.out.print(u.getName() + " ");
}
System.out.println("\n");
}
private static void addRepeatElement(){
User user = USERS.get(0);
USERS.add(1,user);
System.out.println("添加重复元素之后的集合内包含的名字");
for(User u: USERS){
System.out.print(u.getName() + " ");
}
System.out.println("\n");
}
private static void removeElement(){
USERS.removeIf(u -> "SUN".equals(u.getName()));
System.out.println("移除元素之后的集合内包含的名字");
for(User u : USERS){
System.out.print(u.getName() + " ");
}
System.out.println("\n");
}
//集合转换成数组
private static void listToArray(){
//Collection接口下的方法叫toArray
User[] users = USERS.toArray(new User[0]); //里面是User类型的数组对象
System.out.println("集合转换成数组");
for (User u : users){
System.out.print(u.getName() + " ");
}
System.out.println("\n");
}
//数组转换成集合
private static void arrayToList(){
User[] users = USERS.toArray(new User[0]);
List<User> userList = Arrays.asList(users);
System.out.println("数组转换成集合");
for(User u: userList){
System.out.print(u.getName() + " ");
}
System.out.println("\n");
}
}
集合案例
最新推荐文章于 2022-05-25 01:11:19 发布