Java集合

1.集合概述
Java中的集合是工具类,可以存储任意数量的具有共同属性的对象。

2.应用场景

  • 无法预测存储数据的数量
  • 同时存储具有一对一关系的数据
  • 需要进行数据的增删
  • 数据重复问题

3.集合框架的体系结构

1.Collection:存储类的对象
它分为3个子接口

  • List:序列 存放有序的数据,允许重复 ,主要实现类:ArrayList
  • Queue:队列 存放有序的数据,允许重复,主要实现类: LinkedList
  • Set:集 存放无序的数据,不允许重复,主要实现类: HashSet

2.Map:存储键值对 无序的 主要实现类:HashMap

4.List

  • List是元素有序并且可以重复的集合,成为序列
  • List可以精确控制每个元素的插入位置,或删除某个位置的元素
  • List的两个主要实现类数ArrayList 和LinkedList

1.ArrayList

  • 底层是由数组实现的
  • 长度动态增长,以满足应用程序的需求
  • 在列表尾部插入或删除数据非常有效
  • 更适合查找和更新元素
  • ArrayList中的元素可以为null
package com.imooc.collection;

import java.util.ArrayList;

public class ArrayListDemo {
    
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("1");
        list.add("张三");
        list.add("李四");
        System.out.println(list.size());
        list.remove("张三");
        System.out.println(list);

    }
}

5.Set

  • Set是元素无序并且不可重复的集合,被称为集
  • HashSet是Set的一个重要实现类,称为哈希集
  • HashSet中的元素无序并且不可重复
  • HashSet中只允许一个null元素
  • 具有良好的存取和查找性能
package com.imooc.collection;

public class Cat extends Object{
    private String name;
    private int age;

    public Cat(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 "Cat{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

package com.imooc.collection;

import java.util.HashSet;
import java.util.Iterator;

public class HashSetDemo {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<String>();
        set.add("blue");
        set.add("red");
        set.add("green");
        set.add("black");
        set.add("pink");
        System.out.println(set);
        System.out.println(set.size());
        Iterator<String> it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());

        }
        System.out.println("--------------------");


        /*
        Iterator(迭代器)接口遍历集合中的元素
        hasNext()检测集合中是否还有下一个元素
        next()返回集合中的下一个元素
         */

        HashSet<Cat>  set1 = new HashSet<Cat>();
        Cat cat = new Cat("小明",18);
        set1.add(cat);
        for (Cat value : set1) {
            System.out.println(value.getName());
        }
        //判断集合中是否包含指定元素
        if(set1.contains(cat)){
            System.out.println("包含");
        }
        //移除数据
        set1.remove(cat);
        //判断集合是否为空
        if(set1.isEmpty()){
            System.out.println("为空");
        }else{
            System.out.println("不为空");
        }

    }
}

6.Map

  • Map中的数据是以键值对(key-value)形式存储的
  • key-value以Entry类型的对象实例存在
  • 可以通过key快速查找value
  • 一个映射不能包含重复的键

HashMap

  • 哈希表的Map接口的实现
  • 允许使用null值和null键
  • key值不允许重复
  • HashMap中的Entry对象是无序排列的
package com.imooc.collection;

import java.util.*;

public class HashMapDemo {
    public static void main(String[] args) {

        Map<String,String> hashMap = new HashMap<String,String>();


        hashMap.put("username", "张三");
        hashMap.put("age", "18");
        hashMap.put("sex", "男");
        //打印输出value的值(使用迭代器)
        Iterator<String> iterator = hashMap.values().iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        //打印输出key的值(使用迭代器)
        Iterator<String> iterator1 = hashMap.keySet().iterator();
        while (iterator1.hasNext()) {
            System.out.println(iterator1.next());
        }
        System.out.println("------------------------");
        //打印输出key和value的值
        //通过entrySet方法
        Set<Map.Entry<String,String>> entrySet =  hashMap.entrySet();
        for (Map.Entry<String,String> entry : entrySet) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }

        //查找key
        Set<String> keySet = hashMap.keySet();
        for (String key : keySet) {
            if("age".equals(key)){
                System.out.println("找到了key"+hashMap.get(key));
                break;
            }else{
                System.out.println(key);
            }
        }
        System.out.println("-----------------------");
        //HashMap 的键集合(通过 keySet() 方法获取)放入 ArrayList 中
        ArrayList<String> arrayList = new ArrayList<>(hashMap.keySet());
        for (String key : arrayList) {
            System.out.println(key);
        }


    }
}

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值