1.此类实现set接口 2.数据结构:是以hash表结构来进行存储的 3.特点: A.无序 无索引 B.不能重复 C.此类不是同步实现的1,在多线程是不安全的二.set集合存储元素唯一的原因 三.linkedHashSet
1.是HashSet的子类 2.具有可预知迭代顺序 Set 接口的哈希表和双链接列表实现 3.特点: A.有序 B.不可以重复 C.此实现类不是同步的,在多线程也是不安全的四.案例
需求:从键盘输入一串字符串,有序,去重,
代码:
package com.qf.lt.oop03; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Test03 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("输入一串字符串:"); String str = input.next(); //实例化Map列表 Map map = new HashMap(); //转换为字符数组 char[] cha = str.toCharArray(); for (int i=0;i< cha.length;i++){ //判断map列表里面是否有了此数据,没有就加进去 if (!map.containsKey(cha[i])){ map.put(cha[i],1); }else { // map.put(cha[i], (Integer)(map.get(cha[i]))+1); } } System.out.println(map); } }五.TreeSet
1.特点:使用元素的自然顺序对元素进行排序 Comparator 进行排序 底层是红黑树 2.排序解释: A.对数值(基本数据类型 整数 小数)来进行 升序进行排序 B.字符串进行排序是按照 字符串首字母字符的编号来进行排序 C.自定的实体类TreeSet是不能进行排序 3.自定义必须指定的排序的规则 A.定义的类 实现Comparable 重写方法compareTo() B.定义的规则: this - object >0 表示当前对象 大于比较对象 this - object <0 表示当前对象 小于比较对象 this - object=0 表示当前对象 等于比较对象
student类:
package com.qf.lt.oop02; public class Student { private String name; private int age; public Student() { } public Student(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 + '}'; } }
测试类:
package com.qf.lt.oop02; import java.util.Comparator; import java.util.Set; import java.util.TreeSet; public class Test { public static void main(String[] args) { //使用内部类 Set set = new TreeSet(new Comparator() { @Override public int compare(Object o1, Object o2) { Student stu1 = (Student)o1; Student stu2 = (Student)o2; return stu1.getAge()-stu2.getAge(); } }); Student stu01 = new Student("张三",15); Student stu02 = new Student("李四",26); Student stu03 = new Student("王五",20); set.add(stu01); set.add(stu02); set.add(stu03); System.out.println(set); } }六.Map的概念
1.在生活中,会将一些事物进行对应 ip==>主机 丈夫==>妻子 .....都是一一对应的关系 2.map集合就是一个个一一对应的关系,键值对进行映射 通过键来映射值 key==>value .键映射值得对象。一个映射不能包含重复的键;每一个键最多只能映射一个值 4.子类: HashMap TreeMap Hashtable七.HashMap常用的方法
package com.qf.lt.oop03; import java.util.Collection; import java.util.HashMap; import java.util.Map; public class Test { public static void main(String[] args) { Map map =new HashMap(); //添加数据 map.put("邓超","杨幂"); map.put("谢霆锋","王菲"); map.put("张三","李四"); //指定元素的key map.containsKey("张三"); //获取指定元素的键值对 System.out.println(map.get("邓超")); //获取map集合里面的所有key或者value System.out.println(map.keySet()); Collection col = map.values(); System.out.println(col); System.out.println(map); } }八.Map的第一中遍历方法
代码:
package com.qf.lt.oop03; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class Test01 { public static void main(String[] args) { Map map =new HashMap(); //添加数据 map.put("邓超","杨幂"); map.put("谢霆锋","王菲"); map.put("张三","李四"); //拿到key值,进行遍历 Set set = map.keySet(); //使用增强for循环 //使用迭代器 Iterator iter = set.iterator(); while (iter.hasNext()){ //转 Object o = iter.next(); System.out.println(o+"t"+map.get(o)); } } }九.Map的第二种遍历方法
通过封装对象存储在集合中
代码:
package com.qf.lt.oop03; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class Test02 { public static void main(String[] args) { Map map =new HashMap(); //添加数据 map.put("邓超","杨幂"); map.put("谢霆锋","王菲"); map.put("张三","李四"); //进行封装成对象 Set set = map.entrySet(); //迭代器 Iterator iterator = set.iterator(); while (iterator.hasNext()){ Object obj = iterator.next(); Map.Entry entry = (Map.Entry) obj; System.out.println(entry.getKey()+"t"+entry.getValue()); } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)