zoukankan      html  css  js  c++  java
  • 迭代器中set的使用

    今天对迭代器中的set方法进行了一下简单的使用,由于之前使用过list方法,所以将他与list进行了一下对比。

    list中加入对象时不会进行查重,也就是只要是一个符合的对象就可以加到list中,而对于set来说他是一个不能有重复的集合,会对其进行一个查重。另外两种集合对排序的方法也是不一样的,对于list来说,你可以先将其存在集合中,然后调用方法,对list进行一次排序,而对于set来说,他是在用TreeSet集合在向集合的添加的过程中就做了一个简单的排序,第一次使用这种方法,对其中的具体原理还是不太了解,感觉在使用过程中主要就是这些区别。

    以下是两种方法的使用

    package iterator;
    
    import java.util.ArrayList;
    
    import java.util.Collections;
    import java.util.Comparator;
    
    import java.util.List;
    import java.util.Set;
    import java.util.TreeSet;
    
    import javax.net.ssl.SNIHostName;
    public class Client {
    
        public static void main(String[] args) {
        
            List<Student> list = listStudent();
            
            System.out.println("使用list进行遍历");
            listASC(list);
            listDESC(list);
            setASC();
            setDESC();
            
            
            
        }
        
        //将数组存储在set中
        public static void setASC()
        {
            System.out.println("使用set进行顺序输出");
            Set<Student> set = new TreeSet<Student>(new setCompare()) ;
            set.add(new Student(3, "李四", 19));
            set.add(new Student(2, "张", 18));
            set.add(new Student(5, "李", 19));
            set.add(new Student(1, "王五", 18));
            set.add(new Student(6, "赵柳", 19));
            
            for(Student stu: set)
            {
                System.out.println("学号:" + stu.getId() + "  姓名:" + stu.getName() + "  年龄:" + stu.getAge());
            }
            
        }
        
        //将数组存储在set中
        public static void setDESC()
        {
            System.out.println("使用set进行逆序输出");
            Set<Student> set = new TreeSet<Student>(new setCompareDESC()) ;
            set.add(new Student(3, "李四", 19));
            set.add(new Student(2, "张", 18));
            set.add(new Student(5, "李", 19));
            set.add(new Student(1, "王五", 18));
            set.add(new Student(6, "赵柳", 19));
            
            for(Student stu: set)
            {
                System.out.println("学号:" + stu.getId() + "  姓名:" + stu.getName() + "  年龄:" + stu.getAge());
            }
            
        }
        
        
        //将数组存储在List容器中
        public static List<Student> listStudent()
        {
            List<Student> list = new ArrayList<Student>();
            list.add(new Student(3, "李四", 19));
            list.add(new Student(2, "张", 18));
            list.add(new Student(5, "李", 19));
            list.add(new Student(1, "王五", 18));
            list.add(new Student(6, "赵柳", 19));
            return list;
        }
        
        public static void listASC(List<Student> list)
        {
            System.out.println("按照学号顺序输出");
            Collections.sort(list,new Comparator<Student>() {
    
                @Override
                public int compare(Student o1, Student o2) {
                    // TODO 自动生成的方法存根
                     if (o1.getId() > o2.getId()) {
                return 1;
            }
            if (o1.getId() == o2.getId()) {
                return 0;
            }
            return -1;
        }
                
                
            });
        
        
            for(Student stu: list)
            {
                System.out.println("学号:" + stu.getId() + "  姓名:" + stu.getName() + "  年龄:" + stu.getAge());
            }
            
        
        }
        
        
        
        public static void listDESC(List<Student> list)
        {
            System.out.println("按照学号逆序输出");
            Collections.sort(list,new Comparator<Student>() {
    
                @Override
                public int compare(Student o1, Student o2) {
                    // TODO 自动生成的方法存根
                     if (o1.getId() < o2.getId()) {
                return 1;
            }
            if (o1.getId() == o2.getId()) {
                return 0;
            }
            return -1;
        }
            });
        
            for(Student stu: list)
            {
                System.out.println("学号:" + stu.getId() + "  姓名:" + stu.getName() + "  年龄:" + stu.getAge());
            }
        }
        
    }
    class setCompare implements Comparator<Student>{  
          
        @Override  
        public int compare(Student o1, Student o2) {  
              
            return o1.getId() - o2.getId();  
        }  
          
    }  
    
    class setCompareDESC implements Comparator<Student>{  
          
        @Override  
        public int compare(Student o1, Student o2) {  
              
            return o2.getId() - o1.getId();  
        }  
          
    }  

    其中用到的Student类

    package iterator;
    
    
    public class Student {
    
        int id;
        String name;
        int age;
        
        public Student(int id,String name,int age) {
            // TODO 自动生成的构造函数存根
            this.id = id;
            this.name = name;
            this.age = age;
            
        }
        
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        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;
        }
        
        
    }

    由于没有具体的数据,所以在处理过程中,我就直接使用了固定的赋值格式了。

  • 相关阅读:
    利用Mathematica计算伴随矩阵
    一个游戏
    华南理工大学2016年数学分析高等代数考研试题参考解答
    中山大学2016年数学分析高等代数考研试题参考解答及其讲解
    张祖锦第7卷第483期一个对数-平方根不等式
    为新生儿办理户口
    丘成桐大学生数学竞赛2014年分析与方程个人赛试题第一题另解
    家里蹲大学数学杂志第7卷第481期一道实分析题目参考解答
    顶级俄国数学家是怎样炼成的?[2016-06-25 张羿 赛先生]
    Calculations are rather interesting
  • 原文地址:https://www.cnblogs.com/1gaoyu/p/11904353.html
Copyright © 2011-2022 走看看