集合进阶

编程入门 行业动态 更新时间:2024-10-06 20:30:54

集合<a href=https://www.elefans.com/category/jswz/34/1769503.html style=进阶"/>

集合进阶

Set集合特点:
package 集合进阶.Collection单列.Set;import java.util.HashSet;
import java.util.Set;/*Set集合特点:不包含重复元素集合无序输出没有带索引的方法,所以不能使用普通for遍历*/
public class Set集合特点 {public static void main(String[] args) {//创建集合对象Set<String> set = new HashSet<String>();//添加元素set.add("hello");set.add("world");set.add("java");set.add("hello");//遍历for (String s : set) {System.out.println(s);}}
}

HashSet集合概述和特点:
package 集合进阶.Collection单列.Set;import java.util.HashSet;/*hashSet集合特点:底层数据结构是哈希表对集合的迭代顺序不做任何保证,也就是说不保证存储和取出的元素顺序一致没有带索引的方法,不能用普通for遍历由于是Set集合,所以不包含重复元素的集合*/
//存储字符串并遍历
public class HashSet集合概述和特点 {public static void main(String[] args) {//创建集合对象HashSet<String> hs = new HashSet<String>();//添加元素hs.add("hello");hs.add("world");hs.add("java");//遍历for (String s : hs){System.out.println(s);}}
}

 

 

TreeSet集合概述和特点:

 

package 集合进阶.Collection单列.Set;
/*TreeSet集合特点:1.元素有序,这里的顺序不是指存储和取出的顺序,而是按照一定的规则进行排序,具体排序取决于构造方法TreeSet():根据其元素的自然排序进行排序TreeSet(Comparator comparator):根据指定的比较器进行排序2.没有索引的方法,不能使用普通for遍历3.由于Set集合,所以不包含重复元素集合*/
//存储整数并遍历
import java.util.TreeSet;public class TreeSet集合概述和特点 {public static void main(String[] args) {//创建集合对象//  <>里面要用引用类型因为int为基本类型//他的引用类型为包装类integerTreeSet<Integer> ts = new TreeSet<Integer>();//添加元素ts.add(10);ts.add(40);ts.add(30);ts.add(50);ts.add(20);ts.add(30);//遍历集合for (Integer i :ts){System.out.println(i);}}
}

 

 

LinkedHashSet集合特点:
package 集合进阶.Collection单列.Set;import java.util.LinkedHashSet;/*LinkedHashSet集合特点:哈希表和链表实现的Set接口,具有可预测的迭代次序。由链表保证元素有序,也就是说元素的存储和取出顺序是一致的由哈希表保证元素唯一,没有重复元素*/
//存储字符串并遍历
public class LinkedHashSet集合概述和特点 {public static void main(String[] args) {//创建集合对象LinkedHashSet<String> LinkedHashSet=new LinkedHashSet<String>();//添加元素LinkedHashSet.add("hello");LinkedHashSet.add("world");LinkedHashSet.add("java");LinkedHashSet.add("world");//遍历集合for (String s : LinkedHashSet){System.out.println(s);}}
}

 案例

不重复的随机数:
package 集合进阶.Collection单列.Set;import java.util.Random;
import java.util.Set;
import java.util.TreeSet;/*需求:编写一个程序,获取10个1-20之间的随机数,要求不能重复思路:创建set集合对象创建随机数对象判断集合的长度小于10是,产生一个随机数,添加到集合重复遍历集合*/
public class 不重复的随机数 {public static void main(String[] args) {//创建set集合对象
//        Set<Integer> set = new HashSet<Integer>();//无序Set<Integer> set = new TreeSet<Integer>();//有序//创建随机数对象Random rand = new Random();//判断集合的长度小于10while(set.size()<10){int number = rand.nextInt(20)+1;set.add(number);}//遍历集合for(Integer i : set){System.out.println(i);}}
}

 

哈希值:
package 集合进阶.Collection单列.Set.哈希值;public class Student {String name;int age;public Student() {}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;}public Student(String name, int age) {this.name = name;this.age = age;}/*@Overridepublic int hashCode() {return 0;}*/
}
package 集合进阶.Collection单列.Set.哈希值;
/*哈希值:是JDK根据对象的地址或者字符串或数字算出来的int类型的数值Object类中有一个方法可以获取对象的哈希值public int hashCode():返回对象的哈希码值*/public class HashDemo {public static void main(String[] args) {//创建学生对象Student s1=new Student("程序员",20);//同一个对象多次调用hashCode()方法返回的哈希值是相同的System.out.println(s1.hashCode());//1060830840System.out.println(s1.hashCode());//1060830840Student s2 = new Student("架构师",30);//默认情况下,不同对象的哈希值是不同的//通过方法重写,可以实现不同对象的哈希值相同System.out.println(s2.hashCode());//2137211482//不同对象哈希值相同,说明字符串重写了hashCode()方法System.out.println("hello".hashCode());//99162322System.out.println("world".hashCode());//113318802System.out.println("java".hashCode());//3254818System.out.println("world".hashCode());//113318802System.out.println("重地".hashCode());//1179395System.out.println("通话".hashCode());//1179395}}

 

Comparable.自然排序:
package 集合进阶.Collection单列.Set.Comparable.自然排序;public class Student implements Comparable<Student>{String name;int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic int compareTo(Student s) {
//        return 0;
//        return 1;
//        return -1;//按年龄大小排序int num=this.age-s.age;//从小到大
//        int num=s.age-this.age;//从大到小//年龄相同时,按照姓名的字母顺序排序int num2=num==0?this.namepareTo(s.name):num;return num2;}
}
package 集合进阶.Collection单列.Set.Comparable.自然排序;/*自然排序Comparable的使用存储学生对象并遍历,创建TreeSet集合使用无参构造方法要求:按年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序结论:用TreeSet集合存储自定义对象,无参构造方法使用的是自然排序对元素进行排序的自然排序,就是让元素所属的类实现Comparable接口,重写comparableTo(To)方法重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写*/import java.util.TreeSet;public class TreeSetDemo {public static void main(String[] args) {//创建集合对象TreeSet<Student> ts=new TreeSet<Student>();//创建学生对象Student s1=new Student("xishi",29);Student s2=new Student("wangzhaojun",28);Student s3=new Student("diaochan",30);Student s4=new Student("yangyuhuan",33);Student s5=new Student("linqingxia",33);Student s6=new Student("linqingxia",33);//添加学生对象到集合ts.add(s1);ts.add(s2);ts.add(s3);ts.add(s4);ts.add(s5);ts.add(s6);//遍历结合for (Student s : ts) {System.out.println(s.getName()+","+s.getAge());}}
}

 

Comparable.比较器:
package 集合进阶.Collection单列.Set.Comparable.比较器;public class Student {String name;int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
package 集合进阶.Collection单列.Set.Comparable.比较器;
/*比较器Comparable的使用存储学生对象并遍历,创建TreeSet集合使用带参构造要求:按年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序结论:用TreeSet集合存储自定义对象,有参构造方法使用的是比较器排序对元素进行排序的比较器排序,就是让集合构造方法接收Comparable的实现类对象,重写compare(To1,To2)方法重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写*/import java.util.Comparator;
import java.util.TreeSet;public class TreeSetDemo {public static void main(String[] args) {//创建集合对象TreeSet<Student> ts=new TreeSet<Student>(new Comparator<Student>() {@Overridepublic int compare(Student s1, Student s2) {//this.age-s.sge//s1,s2int num=s1.getAge()-s2.getAge();int num2=num==0?s1.getName()pareTo(s2.getName()) :num;return num2;}});//创建学生对象Student s1=new Student("xishi",29);Student s2=new Student("wangzhaojun",28);Student s3=new Student("diaochan",30);Student s4=new Student("yangyuhuan",33);Student s5=new Student("linqingxia",33);Student s6=new Student("linqingxia",33);//添加学生对象到集合ts.add(s1);ts.add(s2);ts.add(s3);ts.add(s4);ts.add(s5);ts.add(s6);//遍历结合for (Student s : ts) {System.out.println(s.getName()+","+s.getAge());}}
}

 

更多推荐

集合进阶

本文发布于:2024-02-14 10:58:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763028.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:进阶

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!