day -15-集合学习笔记

day -15-集合学习笔记,第1张

day -15-集合学习笔记 day 15笔记 一.HashSet
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常用的方法 方法的名称方法的描述void clear()删除map集合中所有的元素boolean containsKey(Object key)集合中是否包含指定的keyboolean containsValue(Object value)集合中是否包含指定的值Set> entrySet()用于来遍历map集合V get(Object key)通过键获取值boolean isEmpty()判断集合是否为空Set keySet()获取map集合中所有的keyCollection values()获取Map集合中所有的值V put(K key, V value)如果key不存在则执行添加,如果key存在则修改valueV remove(Object key)根据key删除整个键值对int size()获取集合的长度
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());
        }

    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5710029.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存