栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

14-集合框架2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

14-集合框架2

课前预习笔记

在13-集合框架1

课堂笔记

在java代码中包含三种循环的方式

do...while

while

for

还有一种增强for循环的方式,可以简化循环的编写

所有的集合类都默认实现了Iterable的接口,实现此接口意味着具备了增强for循环的能力,也就是

for-each

       增强for循环本质上使用的也是iterator的功能

       方法:

                iterator()

                foreach()

    在iterator的方法中,要求返回一个Iterator的接口子类实例对象

此接口中包含了

                hasNext()

                next()

在使用iterator进行迭代的过程中如果删除其中的某个元素会报错,并发操作异常,因此如果遍历的

同时需要修改元素,建议使用listIterator(),ListIterator迭代器提供了向前和向后两种遍历的方式

始终是通过cursor和lastRet的指针来获取元素值及向下的遍历索引

当使用向前遍历的时候必须要保证指针在迭代器的结果,否则无法获取结果值

1、set中存放的是无序,唯一的数据

2、set不可以通过下标获取对应位置的元素的值,因为无序的特点

3、使用Treeset底层的实现是Treemap,利用红黑树来进行实现

4、设置元素的时候,如果是自定义对象,会查找对象中的equals和hashcode的方法,如果没有,

比较的是地址

5、树中的元素是要默认进行排序操作的,如果是基本数据类型,自动比较,如果是引用类型的

话,需要自定义比较器

比较器分类:

内部比较器

定义在元素的类中,通过实现Comparable接口来进行实现

外部比较器

定义在当前类中,通过实现Comparator接口来实现,但是要将该比较器传递到集合中

注意:外部比较器可以定义成一个工具类,此时所有需要比较的规则如果一致的话,可以复用,而

内部比较器只有在存储当前对象的时候才可以使用。如果两者同时存在,使用外部比较器。当使用

比较器的时候,不会调用equals方法

作业
public class IteratorDemo {
 
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add(1);
        list.add("123");
        list.add(true);
        list.add(100L);
        list.add(10.0d);
        //遍历集合
//        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
 
        System.out.println("*******************");
        //使用迭代器
//        Iterator iterator = list.iterator();
        ListIterator listIterator = list.listIterator();
        while(listIterator.hasNext()){
//            if(list.contains("123")){  并发操作异常
//                list.remove("123");
//            }
//            Object o = listIterator.next();
//            if("123".equals(o)){
//                listIterator.remove();
//            }
            System.out.println(listIterator.next());
        }
//        System.out.println(list);
 
//        System.out.println("*******************");
//        //增强for循环
//        for(Object i :list){
//            System.out.println(i);
//        }
        System.out.println("*********************************");
        while(listIterator.hasPrevious()){
            System.out.println(listIterator.previous());
        }
 
    }
}
public class LinkedListDemo {
 
    public static void main(String[] args) {
        LinkedList list = new LinkedList();
        list.add(1);
        list.add("abc");
        list.add(true);
        list.add("abc");
        list.add(100L);
        System.out.println(list);
        System.out.println(list.getFirst());
        System.out.println(list.getLast());
        list.addFirst("ok");
        System.out.println(list);
//        System.out.println(list.peek());
//        System.out.println(list);
//        System.out.println(list.poll());
//        System.out.println(list);
//        System.out.println(list.pop());
//        System.out.println(list);
        list.push("no");
        System.out.println(list); 
    }
}
public class SetDemo implements Comparator {
 
    public static void main(String[] args) {
//        Set set = new HashSet();
//        set.add(1);
//        set.add("abc");
//        set.add(true);
//        set.add(100L);
//        set.add("abc");
//        System.out.println(set);
 
        //遍历集合
//        for (int i = 0; i < set.size(); i++) {
//            System.out.println(set.get);
//        }
 
        //迭代器遍历
//        Iterator iterator = set.iterator();
//        while(iterator.hasNext()){
//            Object obj = iterator.next();
//            System.out.println(obj);
//        }
 
        //增强for循环
//        for(Object o : set){
//            System.out.println(o);
//        }
 
//        System.out.println("*******************************");
//        for(Iterator iterator1 = set.iterator();iterator1.hasNext();){
//            System.out.println(iterator1.next());
//        }
 
//        Set set = new TreeSet();
//        set.add(1);
//        set.add(123);
//        set.add(5);
//        set.add(20);
//        set.add("abc");
//        set.add("casd");
//        set.add("dasd");
//        set.add("bfh");
//        System.out.println(set);
 
        Set set = new TreeSet(new SetDemo());
        set.add(new Person("zhangfei",19));
        set.add(new Person("guanyu",20));
        set.add(new Person("zhaoyun",18));
        set.add(new Person("mashaladi",30));
        System.out.println(set);
    }
 
    @Override
    public int compare(Object o1, Object o2) {
        Person p1 = (Person)o1;
        Person p2 = (Person)o2;
        if(p1.getAge() > p2.getAge()){
            return -1;
        }else if(p1.getAge() < p2.getAge()){
            return 1;
        }else{
            return 0;
        }
    }
}
public class Cat implements Comparable {

    private String name;
    private int age;

    public Cat() {
    }

    public Cat(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;
    }

    @Override
    public String toString() {
        return name + "t" + age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Cat cat = (Cat) o;
        return age == cat.age &&
                Objects.equals(name, cat.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    @Override
    public int compareTo(Object o) {
        Cat cat = (Cat) o;
        if (cat.name.length() >this.name.length()){
            return 1;
        }else if (cat.name.length() < this.name.length()){
            return -1;
        }else {
            return 0;
        }
    }
}
public class TestCat {

    public static void main(String[] args) {
        HashSet cat = new HashSet();
        cat.add(new Cat("美美",3));
        cat.add(new Cat("丽丽",2));
        cat.add(new Cat("亚亚",4));
        System.out.println("昵称" + "t年龄");
        //Collections.sort(cat);
        for (Object o : cat){
            System.out.println(o);
        }
    }
}
public class Employee {//员工类

    private String id;//编号
    private String name;//姓名
    private String gender;//性别
    private int age;//年龄
    private String address;//籍贯
    private double salary;//月薪
    //空构造器
    public Employee() {
    }
    //全参构造器
    public Employee(String id, String name, String gender, int age, String address,double salary) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.address = address;
        this.salary = salary;
    }
    //get、set方法
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    //重写toString方法
    @Override
    public String toString() {
        System.out.println("【编号】t【姓名】t【性别】t【年龄】t【籍贯】t【月薪】");
        return "  "+id+"t"+" "+name+"t"+" "+" "+gender+"   t"+" "+age+"tt"+address+"t"+salary;
    }
}
public class Information {
    public static ArrayList employees = new ArrayList();

    //增加员工
    public void addEmployee() {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入新录入员工的编号:");
        String gID = input.next();
        System.out.print("请输入新录入员工的姓名:");
        String gName = input.next();
        System.out.print("请输入新录入员工的性别:");
        String gGender = input.next();
        System.out.print("请输入新录入员工的年龄:");
        int gAge = input.nextInt();
        System.out.print("请输入新录入员工的籍贯:");
        String gAddress = input.next();
        System.out.print("请输入新录入员工的月薪:");
        double gPay = input.nextDouble();
        Employee newOne = new Employee(gID, gName, gGender, gAge, gAddress, gPay);
        employees.add(newOne);
        System.out.println("添加成功!员工列表如下:");
        for (Object o : employees) {
            System.out.println(o);
        }
    }
    public void delEmployee(){
        Scanner input = new Scanner(System.in);
        System.out.print("请输入要删除的员工对应的【员工编号】:");
        String dID = input.next();
        Iterator iterator = employees.iterator();
        while(iterator.hasNext()){
            Employee employee = (Employee)iterator.next();
            if(dID.equals(employee.getId())){
                System.out.print("你是否确认删除?");
                String yn = input.next();
                if(yn.equals("y")){
                    iterator.remove();
                    System.out.println("删除成功!员工列表如下:");
                    for(Object o : employees){
                        System.out.println(o);
                    }
                    break;
                }else if(yn.equals("n")){
                    System.out.println("您已放弃删除");
                    break;
                }else {
                    System.out.println("不存在编号:【"+dID+"】的员工!");
                }
            }
        }
    }
    public void queryEmployee(){
        for(Object o : employees){
            System.out.println(o);
        }
    }
    public void updateEmployee(){
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入需要修改的员工对应的【员工编号】:");
        String uID = scanner.next();
        Iterator iterator = employees.iterator();
        while(iterator.hasNext()){
            Employee employee = (Employee)iterator.next();
            if(uID.equals(employee.getId())){
                employee.toString();
                System.out.print("原有员工姓名是:【"+employee.getName()+"】请输入新的员工姓名:");
                employee.setName(scanner.next());
                System.out.print("原有员工性别是:【"+employee.getGender()+"】请输入新的员工性别:");
                employee.setGender(scanner.next());
                System.out.print("原有员工年龄是:【"+ employee.getAge()+"】请输入新的员工年龄:");
                employee.setAge(scanner.nextInt());
                System.out.print("原有员工籍贯是:【"+employee.getAddress()+"】请输入新的员工籍贯:");
                employee.setAddress(scanner.next());
                System.out.print("原有员工月薪是:【"+employee.getSalary()+"】请输入新的员工月薪:");
                employee.setSalary(scanner.nextDouble());
                System.out.println("修改成功!员工列表如下:");
                for(Object o : employees){
                    System.out.println(o);
                }
                break;
            }
        }
    }
}
public class TestEmployee {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (true){
            System.out.println("**********欢迎使用腾讯互联员工管理系统**********");
            System.out.println("ttt操作码tt操作名称");
            System.out.println("ttt1------------添加员工");
            System.out.println("ttt2------------删除员工");
            System.out.println("ttt3------------修改员工");
            System.out.println("ttt4------------查询员工");
            System.out.println("ttt5------------退出系统");
            System.out.print("请输入操作码【操作码提示:必须是数字】:");
            int num = scanner.nextInt();
            Information information = new Information();
            switch (num){
                case 1:information.addEmployee();
                    System.out.println("操作码t操作名称");
                    System.out.println("1------继续添加");
                    System.out.println("2------返回上级菜单");
                    System.out.print("请输入操作码<必须是数字>:");
                    int aNum = scanner.nextInt();
                    if(aNum == 1){
                        information.addEmployee();
                        break;
                    }else if(aNum == 2){
                        break;
                    }else {
                        System.out.println("输入错误的操作码!强制返回上级菜单!");
                    }
                case 2:information.delEmployee();
                    System.out.println("操作码t操作名称");
                    System.out.println("1------继续删除");
                    System.out.println("2------返回上级菜单");
                    System.out.println("请输入操作码<必须是数字>:");
                    int dNum = scanner.nextInt();
                    if(dNum == 1){
                        information.delEmployee();
                        break;
                    }else if(dNum == 2){
                        break;
                    }else {
                        System.out.println("输入错误操作码!强制返回上级菜单!");
                        break;
                    }
                case 3:information.updateEmployee();
                    System.out.println("操作码t操作名称");
                    System.out.println("1------继续修改");
                    System.out.println("2------返回上级菜单");
                    System.out.println("请输入操作码<必须是数字>:");
                    int uNum = scanner.nextInt();
                    if(uNum == 1){
                        information.delEmployee();
                        break;
                    }else if(uNum == 2){
                        break;
                    }else {
                        System.out.println("输入错误操作码!强制返回上级菜单!");
                        break;
                    }
                case 4:information.queryEmployee();
                    System.out.println("操作码t操作名称");
                    System.out.println("1------返回上级菜单");
                    System.out.println("请输入操作码<必须是数字>:");
                    int qNum = scanner.nextInt();
                    if(qNum == 1) {
                        information.delEmployee();
                        break;
                    }else {
                        System.out.println("输入错误操作码!强制返回上级菜单!");
                        break;
                    }
                case 5:System.exit(0);
                    break;
            }
        }
    }
}


 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880979.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号