HashSet基础知识讲解、及for循环(提升)

您所在的位置:网站首页 for循环的讲解 HashSet基础知识讲解、及for循环(提升)

HashSet基础知识讲解、及for循环(提升)

2023-08-28 13:03| 来源: 网络整理| 查看: 265

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); } }

HashSet存储自定义对象

需要重写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