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());*/ } }
各位朋友,本楼主是学java的,也只是1至2年的小白,但学习能力还是挺强的,已经在工作,而且工作之余还在研究python,如有人需要资源,可在博客园评论,我不时会登录看看,或更新一些东西,如果看到需要资源的评论,我会和你私聊发送资源,谢谢各位咯