Collection中(Set集合)

1. Set
1.1 特点:无序、对象不能重复
1.2 遍历
1.2.1 foreach
1.2.2 迭代器
1.3 常用实现类
HashSet
TreeSet:根据某种(规则)对里面的元素进行排序
自然比较接口: java.lang.Comparable
比较器: java.util.Comparator
String以AscII码进行比较,返回差值

LinkedHashSet:
1)元素是有顺序的
2)元素是不重复的
3)底层数据结构是按照链表的结构存储的 Linked

hashCode

队列 Queue:表示一个先入先出的数据结构(自行研究)

堆栈 Stack:表示一个先进后出的数据结构
压:push
弹:pop

 

代码区域Test类:

package com.zking.Connection02;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class Test {
    public static void main(String[] args) {
        //Set集合
        //1.特点:无序,唯一
        //1.1 无序:数据存入顺序与输出顺序不一致
        Set<String> set = new HashSet<>();
        set.add("zs");
        set.add("ls");
        set.add("ww");
        for (String str : set) {
            System.out.println(str);
        }
    System.out.println("--------------唯一-------------");
        //1.2唯一
        set.add("zs");
        for (String str : set) {
            System.out.println(str);
        }
        System.out.println("-----------唯一------------");
    Set<Student> stus = new HashSet<>();
    stus.add(new Student(1, "zs", "boy"));
    stus.add(new Student(2, "ls", "girl"));
    stus.add(new Student(3, "ww", "boy"));
    stus.add(new Student(1, "zs", "girl"));
    for (Student stu : stus) {
        System.out.println(stu);
    }
    //2.遍历方式
    //2.1迭代器
        System.out.println("===========迭代器==========");
    Iterator<Student> ite = stus.iterator();
    while(ite.hasNext()) {
        System.out.println(ite.next());
    }
        
    //2.2foreach
    System.out.println("============foreach==========");
    for (Student stu : stus) {
        System.out.println(stu);
    }
    
    //3.TreeSet:按照某种规则对集合中的元素进行排序

    System.out.println("----------排序String类型---------");
    Set<String> set1 = new TreeSet<String>();
    set1.add("ww");
    set1.add("ls");
    set1.add("zs");
    set1.add("ab");
    for (String str : set1) {
        System.out.println(str);
    }
    /*     自然比较接口
      java.lang.Comparable
      
      */
    /*System.out.println("==========排序 对象之自然比较接口==========");
    Set<Student> tset = new TreeSet<Student>();
    tset.add(new Student(1, "zs", "boy"));
    tset.add(new Student(2, "ls", "girl"));
    tset.add(new Student(3, "ww", "boy"));
        
    for (Student student : tset) {
        System.out.println(student);
    }    */
    
    System.out.println("==========排序 对象之比较器==========");
    Set<Student> tset1 = new TreeSet<Student>(new IdComparator());
    tset1.add(new Student(1, "zs", "boy"));
    tset1.add(new Student(2, "ls", "girl"));
    tset1.add(new Student(3, "ww", "boy"));
        
    for (Student student : tset1) {
        System.out.println(student);
    }    
    
    /*System.out.println("========List匿名内部类排序===========");
    List<String> lis = new ArrayList<>();
    lis.add("ww");
    lis.add("ls");
    lis.add("zs");
    Collections.sort(lis,new Comparator() {

        @Override
        public int compare(Object o1, Object o2) {
            //升序
            return o1.getSname().hashCode()-o2.getSname().hashCode();
            //降序
            return -(o1.hashCode()-o2.hashCode());
        }
    });*/
        
        
    }
}

Student类:

package com.zking.Connection02;

import java.io.Serializable;

public class Student implements Serializable{
    private Integer sid;
    private String sname;
    private String ssex;
    public Integer getSid() {
        return sid;
    }
    public void setSid(Integer sid) {
        this.sid = sid;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public String getSsex() {
        return ssex;
    }
    public void setSsex(String ssex) {
        this.ssex = ssex;
    }
    public Student(Integer sid, String sname, String ssex) {
        super();
        this.sid = sid;
        this.sname = sname;
        this.ssex = ssex;
    }
    public Student(String sname, String ssex) {
        super();
        this.sname = sname;
        this.ssex = ssex;
    }
    public Student() {
        super();
    }
    @Override
    public String toString() {
        return "Student [sid=" + sid + ", sname=" + sname + ", ssex=" + ssex + "]";
    }
//设置唯一对象
/*@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((sid == null) ? 0 : sid.hashCode()); result = prime * result + ((sname == null) ? 0 : sname.hashCode()); result = prime * result + ((ssex == null) ? 0 : ssex.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Student other = (Student) obj; if (sid == null) { if (other.sid != null) return false; } else if (!sid.equals(other.sid)) return false; if (sname == null) { if (other.sname != null) return false; } else if (!sname.equals(other.sname)) return false; if (ssex == null) { if (other.ssex != null) return false; } else if (!ssex.equals(other.ssex)) return false; return true; }*/ /* /** * 自然比较接口 * java.lang.Comparable *//* public int compareTo(Object o) { Student stu =(Student)o; //升序 return this.getSid()-stu.getSid(); //降序 return -(this.getSid()-stu.getSid()); } */ }

IdComparator类代码:

package com.zking.Connection02;

import java.util.Comparator;

public class IdComparator implements Comparator<Student> {

    @Override
    public int compare(Student o1, Student o2) {
        //升序
        return o1.getSid()-o2.getSid();
        //降序
        /*return -(o1.getSid()-o2.getSid());*/
    }

}

 

posted @ 2019-05-27 16:50  king丶卿蠢  阅读(59)  评论(0编辑  收藏  举报