Java常用集合——Map & List & Set

概述:

Java集合主要由两个接口派生而出,分别是Collection和Map,它们是Java集合框架的根接口,这两个接口又包含了一些子接口(List,Set)和实现类(HashMap,ArrayList,HashSet…)。

在这里插入图片描述

  • Map

Map代表有映射关系的集合,存储的对象通常为键值对,以(“key”,value)的形式出现;添加元素时,不允许重复,当出现键相同时后加入的键值对的值就会覆盖先加入的键值对的值。

HashMap:提供了最快的访问技术,没有按照添加的顺序保存元素

LinkedHashMap:按照添加的顺序保存元素,同时还保存了HashMap的保存顺序

TreeMap:没有按照添加的顺序保存元素,且默认会对键进行排序(自然排序和定制排序二选一)

package com.dlj.test;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;


public class MapTest {

    public static void main(String[] args) {

        Map<String, Integer> nameAgeMap = new HashMap<String, Integer>();//新建一个HashMap集合,key为String类型,value为int类型

        //添加元素
        nameAgeMap.put("Tom", 25);
        nameAgeMap.put("Jack", 21);
        nameAgeMap.put("Bob", 23);
        nameAgeMap.put("Dlj", 22);
        nameAgeMap.put("Lucy", 27);
        nameAgeMap.put("Tom", 30);//键具有唯一性,后添加的值覆盖前面的值


        System.out.println(nameAgeMap);//打印集合中的所有键值对

        System.out.println(nameAgeMap.size());//打印集合中元素的个数

        System.out.println(nameAgeMap.keySet());//打印集合中所有的键

        System.out.println(nameAgeMap.values());//打印集合中所有的值

        System.out.println(nameAgeMap.containsKey("Alice"));//判断集合中是否存在"Alice"键

        System.out.println(nameAgeMap.containsValue(20));//判断集合中是否存在20这个值

        System.out.println(nameAgeMap.get("Tom"));//获取并打印键为"Tom"所对应的的值

        System.out.println(nameAgeMap.remove("Dlj", 22));//移除Dlj=22这个键值对

        System.out.println("**********************");

        Map<String, Integer> nameScoreMap = new LinkedHashMap<String, Integer>();//新建一个LinkedHashMap集合,key为String类型,value为int类型

        //添加元素
        nameScoreMap.put("张三", 78);
        nameScoreMap.put("李四", 90);
        nameScoreMap.put("王五", 91);
        nameScoreMap.put("方六", 88);
        nameScoreMap.put("刘七", 64);

        System.out.println(nameScoreMap);//打印集合中的所有键值对

        System.out.println("**********************");

        Map<String, Integer> nameHeightMap = new TreeMap<String, Integer>();//新建一个TreeMap集合,key为String类型,value为int类型

        //添加元素
        nameHeightMap.put("CC", 182);
        nameHeightMap.put("BB", 160);
        nameHeightMap.put("DD", 155);
        nameHeightMap.put("AA", 178);

        System.out.println(nameHeightMap);//打印集合中的所有键值对
    }

}

在这里插入图片描述

  • List

List可以添加重复的元素,且元素是按照其添加顺序进行存储的

ArrayList:基于动态数组的实现,查询快,添加,删除和修改慢

LinkedList:添加,删除,修改快,查询慢

package com.dlj.test;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * @Author ashley
 * @Date 2019/8/29 17:21
 */
public class ListTest {
    public static void main(String[] args) {
        List<String> nameList = new ArrayList<String>();//新建一个ArrayList集合

        //添加元素
        nameList.add("迪丽热巴");
        nameList.add("易烊千玺");
        nameList.add("王一博");
        nameList.add("张碧晨");
        nameList.add("王奕迅");
        nameList.add("花粥");

        System.out.println(nameList);//打印集合
        
        System.out.println(nameList.size());//获取并输出集合中元素的个数
        
        System.out.println(nameList.get(0));//获取并输出0位置上的元素
        
        System.out.println(nameList.indexOf("花粥"));//获取元素"花粥"所在的位置

        System.out.println("*******************");


        List<String> animalList = new LinkedList<String>();//新建一个LinkedList集合

        //添加元素
        animalList.add("cat");
        animalList.add("dog");
        animalList.add("pig");
        animalList.add("fish");

        System.out.println(animalList);//打印集合
        
        System.out.println(animalList.get(0));//获取并打印0位置上的元素
        
        System.out.println(((LinkedList<String>) animalList).getFirst());//获取并打印头元素
        
        System.out.println(((LinkedList<String>) animalList).getLast());//获取并打印尾元素
        
        System.out.println(animalList.contains("fish"));//判断集合中是否存在fish这个元素,并打印执行结果
        
        System.out.println(animalList.remove("pig"));//从集合中移除pig元素,并打印执行结果

    }
}
        

在这里插入图片描述

  • Set

Set不保存重复的元素,通常使用Set来去重

HashSet:增删查改速度最快,没有按照添加的顺序存储元素,集合元素可以是null,但只能放入一个null

LinkedSet:按照添加的顺序存储元素

TreeSet:按照比较结果的升序保存元素

package com.dlj.test;

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

/**
 * @Author ashley
 * @Date 2019/8/29 17:21
 */
public class SetTest {
    public static void main(String[] args) {
        Set<String> bookSet = new HashSet<String>();

        //添加元素
        bookSet.add("Java核心技术");
        bookSet.add("C语言程序设计");
        bookSet.add("数据结构 C语言版");
        bookSet.add("深入理解Java虚拟机");
        bookSet.add("深入理解Java虚拟机");

        System.out.println(bookSet);//打印集合中所有元素
        
        System.out.println(bookSet.size());//打印集合中元素的个数
        
        System.out.println(bookSet.contains("Java核心技术"));//判断号集合中是否包含"Java核心技术"字段,并输出结果
        
        System.out.println(bookSet.remove("深入理解Java虚拟机"));//从集合中移除字段"深入理解Java虚拟机"
        
        bookSet.clear();//清空集合中的元素

        System.out.println("**********************");

        Set<String> citySet = new LinkedHashSet<String>();
		
		//添加元素
        citySet.add("上海");
        citySet.add("武汉");
        citySet.add("北京");
        citySet.add("浙江");
        citySet.add("长沙");

        System.out.println(citySet);

        System.out.println("**********************");

        Set<String> countrySet = new TreeSet<String>();
         
        //添加元素
		countrySet.add("China");
        countrySet.add("Japan");
        countrySet.add("America");
        countrySet.add("Korea");

        System.out.println(countrySet);

    }
}

在这里插入图片描述

发布了49 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ashleyjun/article/details/100142971