集合案例

6 篇文章 0 订阅
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");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值