JavaSE------Map,Set基础代码

1. 概述

SetMap
HashSet,LinkedHashSet,TreeSetHashMap, LinkedHashMap,TreeMap

2. Set

(1).HashSet

特点:元素唯一,元素无序。

下面分别以String,Integer,自定义类型做例

String

public class demo {
public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("张曼玉");
        set.add("王祖贤");
        set.add("钟楚红");
        set.add("林青霞");
        set.add("杨超越");
        set.add("张曼玉");
        set.add("王祖贤");
        set.add("钟楚红");
        set.add("林青霞");
        set.add("杨超越");
for (String s : set) {
// System.out.println(set);
            System.out.println(s);//set是集合,集合啊
}
}
}

```java
林青霞
杨超越
王祖贤
钟楚红
张曼玉

Integer



```java
public class demo2 {
public static void main(String[] args) {
        HashSet<Integer> set = new HashSet<>();
        set.add(123);
        set.add(123);
        set.add(1234);
        set.add(1234);
        set.add(111);
        set.add(11);
for (Integer integer : set) {
            System.out.println(integer);
}
        System.out.println(set);
}
}

1234
123
11
111
[1234, 123, 11, 111]

自定义类型

public class demo3 {
public static void main(String[] args) {
        HashSet<Student> student = new HashSet<>();
        student.add(new Student("杨",20));
        student.add(new Student("桑",20));
        student.add(new Student("李",20));
        student.add(new Student("李",20));
        student.add(new Student("郑",21));
        student.add(new Student("明",20));
        student.add(new Student("杨",20));
        student.add(new Student("桑",20));
        student.add(new Student("李",20));
        student.add(new Student("李",20));
        student.add(new Student("郑",21));
        student.add(new Student("明",20));


for (Student student1 : student) {
            System.out.println(student1.getName()+"=="+student1.getAge());
}
}
}

```java
桑==20==20==20==20==20==21

(2).LinkedHashSet

特点:元素唯一且有序,是集合

public class demo {
public static void main(String[] args) {
        LinkedHashSet<String> set = new LinkedHashSet<>();//唯一且有序,是集合


       set.add("杨");
       set.add("桑");
       set.add("李");
       set.add("李");
       set.add("郑");
       set.add("明");

        set.add("杨");
        set.add("桑");
        set.add("李");
        set.add("李");
        set.add("郑");
        set.add("明");

for (String s : set) {
            System.out.println(s);
}
        System.out.println(set);
        ArrayList<String> strings = new ArrayList<>();
        strings.add("杨");
        strings.add("李");
        strings.add("桑");
        strings.add("李");
        strings.add("郑");
        strings.add("明");

        strings.add("杨");
        strings.add("李");
        strings.add("桑");
        strings.add("李");
        strings.add("郑");
        strings.add("明");


for (String string : strings) {
            System.out.println(string);
}
//作用,对list集合去重
        LinkedHashSet<String> strings1 = new LinkedHashSet<>(strings);
        System.out.println(strings1);
for (String s : strings1) {
            System.out.println(s);
}
        HashSet<String> strings2 = new HashSet<>(strings);
        System.out.println(strings2);
}
}

```java
杨
桑
李
郑
明
[,,,,]
杨
李
桑
李
郑
明
杨
李
桑
李
郑
明
[,,,,]
杨
李
桑
郑
明
[,,,,]

(3).TreeSet

特点:有排序功能,是集合。元素唯一

public class demo {
public static void main(String[] args) {
        TreeSet<Integer> i = new TreeSet<>();//有排序功能,是集合。元素唯一。
        i.add(18);
        i.add(17);
        i.add(23);
        i.add(22);
        i.add(21);
        i.add(20);
        i.add(19);

        i.add(18);
        i.add(17);
        i.add(23);
for (Integer integer : i) {
            System.out.println(integer);
}
        System.out.println(i);
}
}

```java
17
18
19
20
21
22
23
[17, 18, 19, 20, 21, 22, 23]

3.Map

(1).HashMap

键值对,map中只和键有关,和值无关,键会进行排序,好像是根据大小进行排序的。

public class demo2 {
public static void main(String[] args) {
        HashMap<String, Student> map = new HashMap<>();
        map.put("1",new Student("yangkaibo",17));
        map.put("22222a",new Student("sangdongjie",18));

        map.put("5d",new Student("lizhongjian",17));
        map.put("6c",new Student("lizhaoxiang",18));
        map.put("3we",new Student("mongjiangyuan",20));
        map.put("4f",new Student("zhengwenteng",21));

/*  System.out.println(map);
        new HashSet<String>().add("abc");*/
        System.out.println(map);

}

下面这段代码,通过两种方式遍历输出

方式1:遍历 键找值
方式2:把键值对 对象 统一取出来,再进行输出

public class demo {
    public static void main(String[] args) {
        HashMap<String, Student> map = new HashMap<>();

        map.put("s001", new Student("张三", 23));
        map.put("s001", new Student("张三3333", 230));
        map.put("s002", new Student("张三", 23));
        map.put("s003", new Student("lisi", 29));
        map.put("s005", new Student("王五", 28));
        map.put("s006", new Student("赵六", 27));
        map.put("s007", new Student("田七", 27));

       
        Set<String> strings = map.keySet();

        for (String string : strings) {
            System.out.println(string+"===="+map.get(string));
        }

        Set<Map.Entry<String, Student>> entries = map.entrySet();
        for (Map.Entry<String, Student> entry : entries) {
            String key = entry.getKey();
            Student value = entry.getValue();
            System.out.println(key+"===="+value);
        }
    }
}

(2).LinkedHashMap

特点:元素有序 并且唯一


``java
public class demo {
    public static void main(String[] args) {

        LinkedHashMap<String, String> map = new LinkedHashMap<>();
        map.put("贾乃亮", "李小璐");
        map.put("贾乃亮", "李小璐2");
        map.put("王宝强", "蓉儿");
        map.put("陈羽凡", "白百合");
        map.put("王大治", "董洁");
        map.put("大朗", "金莲");

        map.forEach(new BiConsumer<String, String>() {
            @Override
            public void accept(String s, String s2) {
                System.out.println(s+"=="+s2);
            }
        });
    }
}

```java
贾乃亮==李小璐2
王宝强==蓉儿
陈羽凡==白百合
王大治==董洁
大朗==金莲

(3).TreeMap

特点:可排序且键唯一

下面这段代码重写了Comparator方法,避免了出现同名现象有信息录入不了

Comparator方法利用的返回值为0,1,-1进行排序

public class demo {
    public static void main(String[] args) {
        TreeMap<Student, String> map = new TreeMap<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int num = o1.getName().length() - o2.getName().length();
                int num2 = num == 0 ? o1.getName().compareTo(o2.getName()) : num;
                int num3 = num2 == 0 ? o1.getAge() - o2.getAge() : num2;
                return num3;
            }
        });
        //键值对 一对一,不会出现重复现象。
        map.put(new Student("张三", 23), "s001");
        map.put(new Student("张三", 230), "s002");
        map.put(new Student("张三", 23), "哈哈哈哈");
        map.put(new Student("张三3333", 230), "s001");
        map.put(new Student("张三sdfsfsdfs", 23), "呵呵呵呵呵");
        map.put(new Student("lisi", 29), "s001");
        map.put(new Student("王五sdffffffffffffffffffffffffffffffffff", 28), "s001");
        map.put(new Student("赵六ssss", 27), "s001");
        map.put(new Student("田七", 27), "s001");

        map.forEach(new BiConsumer<Student, String>() {
            @Override
            public void accept(Student student, String s) {
                System.out.println(student.getName()+"---"+student.getAge()+"---"+s);
            }
        });
    }
}

```java
张三---23---哈哈哈哈
张三---230---s002
田七---27---s001
lisi---29---s001
张三3333---230---s001
赵六ssss---27---s001
张三sdfsfsdfs---23---呵呵呵呵呵
王五sdffffffffffffffffffffffffffffffffff---28---s001
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值