Java学习笔记(6)List和Map集合

一、集合

Java集合就像一个容器,可以存储任何类型的数据,也可以结合泛型来存储具体的类型对象。在程序运行时,Java集合可以动态的进行扩展,随着元素的增加而扩大。在Java中,集合类通常存在于java.util包中。

Java集合主要由2大体系构成,分别是Collection体系和Map体系,其中Collection和Map分别是2大体系中的顶层接口。

Collection主要有三个子接口,分别为List(列表)、Set(集)、Queue(队列)。其中,List、Queue中的元素有序可重复,而Set中的元素无序不可重复;

List中主要有ArrayList、LinkedList两个实现类;Set中则是有HashSet实现类;而Queue是在JDK1.5后才出现的新集合,主要以数组和链表两种形式存在。

Map同属于java.util包中,是集合的一部分,但与Collection是相互独立的,没有任何关系。Map中都是以key-value的形式存在,其中key必须唯一,主要有HashMap、HashTable、TreeMap三个实现类。

 

转载链接:https://www.jianshu.com/p/25aa92f8d681

 
二、List集合
package Java基础.集合;

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

public class TestList {
    public static void main(String[] args) {
        // List是个接口,实现了Collection接口,主要有两个实现类:ArrayList和LinkedList类。
        // List集合允许出现重复的元素
        // List集合中的元素是有序的,可以根据索引位置来检索List集合中的元素
        List<String> list = new ArrayList<String>();// 可以使用接口对象来接收具体实现接口类的new对象,创建List集合
        list.add("a");// 索引为1
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("a");// 元素可重复


        System.out.println(list);// 打印list所有元素
        System.out.println(list.get(2));// 打印下标为2的元素

        list.add(1, "f");// 指定索引位置插入数据
        System.out.println(list);// 打印list所有元素

        List<String> l = new ArrayList<String>();
        l.add("123");
        l.add("456");

        list.addAll(2, l); // 指定索引位置插入集合
        System.out.println(list);

        System.out.println(list.indexOf("a"));// 获取指定元素在集合中的第一次出现的下标
        System.out.println(list.lastIndexOf("a"));// 获取指定元素在集合中的最后一次出现的下标

        list.remove(2);// 删除指定索引位置的数据
        System.out.println(list);

        list.set(0, "ff"); // 根据指定下标修改元素
        System.out.println(list);

        List<String> sublist = list.subList(2, 4);// 根据索引下标的起始位置截取一段元素形成一个新的集合,和python切片操作一样,顾头不顾尾
        System.out.println(sublist);

        System.out.println(list.size());// 集合的长度


    }
}
二、Map集合
  map是存储的key-value键值对,是无序的 ;
  TreeMap存储Key-Value对时,需要根据Key对key-value对进行排序。TreeMap可以保证所有的Key-valued对处于有序的状态
  TreeMap的key排序:
    1.自然排序:TreeMap的所有的Key必须实现Comparable接口,而且所有的Key应该是同一个类的对象,否则将会抛出ClassCastException
    2.定制排序:了解即可,一般只会使用自然排序
 
package Java基础.集合;

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

public class TestMap {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<String,Integer>();
        map.put("b", 1);// 通过put方法添加数据
        map.put("c", 2);
        map.put("e", 2);
        System.out.println(map);

        System.out.println(map.get("b"));// 根据key取值
        map.remove("c");// 根据key移除键值对
        System.out.println(map);

        System.out.println(map.size()); // map集合的长度

        System.out.println(map.containsKey("b"));// 判断当前集合是否包含指定的key

        System.out.println(map.containsValue(3));// 判断当前集合是否包含指定的value

//        map.clear(); // 清空map

        Set<String> keys = map.keySet();// 获取map集合的key集合
        map.values();// 获取map集合的value集合

        // 遍历map集合,类似于python中的遍历字典,通过map.keySet()
        for(String key:keys){
            System.out.println("key:"+ key + " ,value:" + map.get(key));
        }

        // 通过map.entrySet()遍历
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for(Map.Entry<String,Integer> en:entries){
            System.out.println("key:"+ en.getKey() + " ,value:"+en.getValue());
        }

        // treeMap,自然排序使用的是字典排序,
        TreeMap<Integer, String> treemap = new TreeMap<Integer, String>(); // 创建treeMap集合
        treemap.put(4, "a");
        treemap.put(2, "a");
        treemap.put(1, "a");
        treemap.put(3, "a");
        System.out.println(treemap);

        TreeMap<String, String> treemap2 = new TreeMap<String, String>(); // 创建treeMap集合
        treemap2.put("b","b");
        treemap2.put("c","c");
        treemap2.put("d","d");
        treemap2.put("ab","ab");
        treemap2.put("1","sdc");
        System.out.println(treemap2);


    }
}
 
 
 
原文地址:https://www.cnblogs.com/bugoobird/p/13781759.html