Java常用接口——Map与List详解

文章目录

    • Map
    • List

如果大家对算法有一些了解,应该会知道这两个都是具体的数据结构。基于接口的原则,其实大家会想到即使同一个数据结构也可以有多种实现方式。而我们在设计我们的java接口、对象的时候其实并不需要考虑实现,一般就是用接口定义类型。这也是面向接口开发的核心点之一:尽可能用接口来设计属性或者方法。下面我们需要了解一下java当中如何使用这两个数据结构的,详解如下:

Map

Java常用接口——Map与List详解_第1张图片
如上图,Map(映射)是遵循Key:value这样的形式的集合。key、value的类型可以是任何的java对象。
我们大部分情况下,都会使用HashMap这个Map的实现类。所以如果想得到一个Map的实例的话可以使用HashMap。

import java.util.Map;
import java.util.HashMap;

// key value 得是 Java 类型
Map<key,value> map = new HashMap<>();

举个例子,我们把1、2、3、4、5、6、7这些数字映射为英文的星期,利用Map如何完成呢?
首先我们可以使用**map.put(key,value)**这个方法完成数据的存储。
PS知识点扩充:

  • 由于Map的键和值都是java对象类型,所以我们在实际创建的时候也需要指定对应的类型,上面的案例中key是数字类型:integer,value是字符串类型:String,所以我们可以用Map来表示,这是关于泛型的用法。

  • 实际上java也有类似String这样的对象类型,int的java对象就是Integer;boolean的java对象就是Boolean;double的java 对象就是Double,byte对应的java对象是Byte。有java对象和没有对象的区别在于有对象的默认值是null,比如int的默认值是0,但是Interger的默认值是null;boolean的默认值是false,但是Boolean的默认值是null。

  • java基本数据类型里面:int byte short long float double char的默认值是0 0.0 \u0000;布尔值boolean是false,除了基本数据类型,其余默认都是null。
    Java常用接口——Map与List详解_第2张图片

// 实例化Map对象
Map<Integer,String> map = new HashMap<>();

map.put(1,"Monday");
map.put(2,"Tuesday");
map.put(3,"Wednesday");
map.put(4,"Thursday");
map.put(5,"Friday");
map.put(6,"Saturday");
map.put(7,"Sunday");

以上我们就完成了集合的储存。如果我们想知道数字3对应的值,那么我们就可以使用**map.get(key)**这个方法来获取了。

String weekText = map.get(3);
System.out.println(weekText);

由于Map也是一种集合数据,所以也有集合大小的方法:size()和遍历能力for。

int size = map.size();
System.out.println(size);

map的遍历相对麻烦一点,因为是key:value格式,所以我们一般先得到这个数据格式的集合(entrySet),完整的例子如下:

for (Map.Entry<Integer,String> entry : map.entrySet()){
     

   System.out.println("Key = " + entry.getKey() +
                  ", Value = " + entry.getValue());
 }
 //Set entrySet( )返回此映射中包含的映射关系的 Set 视图。

完整的Map接口方法可以查看文档

List

List是ArrayList得接口,支持统一类型数据得集合存储。
比如说储存字符串集合:

List<String> strings = new ArrayList<>();

List本质上就是一个动态数组对象,可以方便的储存集合对象。完成实例化之后,就可以使用List的add方法进行数据的添加。List既然是动态数组那也就基本数组的特点,可以获取长度size(),可以根据索引获取具体的值get(索引),ArrayList的索引是从0开始的。

 public static void main(String[] args){
     

    // 创建一个 ArrayList 存储字符串集合
    ArrayList<String> strs = new ArrayList<>();

    // 添加数据到 ArrayList 实例里
    strs.add("张三");
    strs.add("李四");

    // 获取集合的长度
    int size = strs.size();

    // 使用 for 循环迭代每一条记录
    for(int i=0;i<size;i++){
     
       // 根据索引获取值,值的类型是 String
       String str = strs.get(i);
       System.out.println(str);
    }
    //遍历方法二
    for(String str : strs){
     
  System.out.println(str);
}

  }

你可能感兴趣的:(java学习,java,编程语言,数据结构)