HashSet基础知识讲解、及for循环(提升) |
您所在的位置:网站首页 › for循环的讲解 › HashSet基础知识讲解、及for循环(提升) |
for循环(提升)
增强for循环: 格式:for(int i:arr(数组或集合)){//只能做遍历手段 system.out.println(i); } 注意:如果循环完毕,里面存储的是最后一个数据,针对所有集合和数组都可以遍历。 三种迭代功能(删除):1.普通for循环可以删除元素(根据索引删除) 2.迭代器可以删除 3.增强for循环不可以删除 可变参数概述和使用(容易出问题少用)概述:定义方法时不知道定义多少参数 格式:修饰符 返回值类型 方法名称(数据类型 。。。变量名){}; 注意事项: 1.这里的变量是一个数组 2.如果一个方法可变参数存在,并有多个参数,那么可变参数会是最后一个 Arrays工具类中的asList()方法使用(少用)(数组转集合) Person[] p=new Person[hs.size()]; List hs1=Arrays.asList(p); //数组转集合asList可以吧数组转化为集合,但是不支持集合的添加和删除 集合转数组:toArray public static void main(String[] args) { // TODO Auto-generated method stub List list=new ArrayList(); list.add(1); list.add(2); list.add(3); //System.out.println(list); Integer []arr=new Integer[3]; list.toArray(arr);//将集合内容转化为数组 for (Integer integer : arr) { System.err.println(integer); } System.out.println(Arrays.toString(arr)); } ArrayList嵌套ArrayList(集合嵌套类)* public static void main(String[] args) { ArrayList list=new ArrayList(); ArrayList fist=new ArrayList(); fist.add(new Student("张三",23)); fist.add(new Student("张四",24)); fist.add(new Student("王五",25)); ArrayList tow=new ArrayList(); tow.add(new Student("张三",23)); tow.add(new Student("张四",24)); tow.add(new Student("王五",25)); list.add(fist); list.add(tow); for (ArrayList a : list) { for (Student student : a) { System.out.println(student); } } } HashSet存储字符串并遍历 public static void main(String[] args) { // TODO Auto-generated method stub HashSet hs=new HashSet(); hs.add("a"); hs.add("b"); hs.add("c"); hs.add("d"); hs.add("a"); for (String string : hs) { System.out.println(string); } }需要重写equals底层 package com.hashset.cn; import java.util.HashSet; public class Demo3 { public static void main(String[] args) { // TODO Auto-generated method stub HashSet hs=new HashSet(); hs.add(new Person("张三",23)); hs.add(new Person("张三",23)); hs.add(new Person("李四",24)); hs.add(new Person("王五",25)); hs.add(new Person("张三",23)); for (Person person : hs) { System.out.println(person); } } } package com.hashset.cn; import java.util.Objects; public class Person { private String name; private int age; public Person(String name,int age ) { this.name=name; this.age=age; } 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; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + "]"; } @Override public int hashCode() { return 10; } @Override public boolean equals(Object obj) { Person other = (Person) obj; return age == other.age && Objects.equals(name, other.name); } }hashSet存储对象时会保证元素唯一性 。 LinkedHashSet概述和使用特点:存取一致性 金融相关、车载相关,默认LinkedHashSet public static void main(String[] args) { // TODO Auto-generated method stub LinkedHashSet Lh=new LinkedHashSet(); Random r=new Random(); for (int i = 0; Lh.size() < 10; i++) { Lh.add(r.nextInt(20)+1); } for (Object object : Lh) { System.out.println(object); } } TreeSet存储I元素并遍历comparator接口 compare(T o1,T o2)比较 public static void main(String[] args) { TreeSet t=new TreeSet(new Demo4());//将德mo比较器引入 t.add("aaa"); t.add("aaaa"); //t.add("zaaa"); t.add("aa"); t.add("aa"); //t.add("1a"); //t.add("你好"); t.add("aaaaa"); System.out.println(t); } public class Demo4 implements Comparator{ @Override public int compare(String o1, String o2) { // TODO Auto-generated method stub //数越大越在前面 //int num=o1.length()-o2.length();//从小到大 int num=o2.length()-o1.length();//从大到小 return num==0? o1.compareTo(o2):num; }TreeSet底层有排序功能 优先级:数字》大写字母》小写字母》长度》中文 TreeSet原理 特点:TreeSet是用来排序的,可以指定一个循序,对象存入之后,,会按照我们指定的循序排列。 使用方式(重写Camparable接口) 区别: TreeSet构造函数:什么都不传,默认按照类中的comparable比较顺序传入(类型转换异常classcastExeption)TreeSet如果传入comparator优先按照传入的comparator中重写的comparae方法中的比较顺序执行(add添加是才会启动) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |