迭代器中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;
    }
    
    
}

由於沒有具體的數據,所以在處理過程中,我就直接使用了固定的賦值格式了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM