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;
        }
        
        
    }

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

  • 相关阅读:
    Session共享的解决方案[转]
    学习SAS_001_循环语句中读取数据文件
    如何让远程数据库中的1张表导入到本地数据库中
    SAS之COMPBL、DEQUOTE函数
    使用winzip命令行对文件打包压缩
    让每个单词的第一个字母自动大写
    For the distance calculation
    SAS数据集转置
    Web开发/设计人员应当知道的15个网站
    你从没见过的 HTML5 动画效果
  • 原文地址:https://www.cnblogs.com/1gaoyu/p/11904353.html
Copyright © 2011-2022 走看看