ListandMap

30 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情

\

List

添加顺序和取出顺序一致

List每个元素都有索引(从零开始)

public class practise {
    public static void main(String[] args) {
       List list=new ArrayList();
       list.add("zhang");
       list.add("lll");
       list.add(0,"lll");
        System.out.println(list);
        List list1 = new ArrayList();
        list1.add("bbb");
        list1.add("aaa");
        list.add(1,list1);
        System.out.println(list);
        System.out.println(list.indexOf("lll"));//获取第一次出现的位置
        System.out.println(list.lastIndexOf("lll"));//最后一次出现的位置
        System.out.println(list.remove(0));//移除0位置的元素
        System.out.println(list.set(1,"weixiang"));//修改1上的元素,只能修改,不能添加
          System.out.println(list.subList(0,2));//返回0,2的元素
    }
​
}

List三种遍历方式

  1. iterator
  2. 增强for
  3. 普通for
  • package com.hspedu.list_;
    import java.util.*;
    /**
    ​
    * @author 韩顺平
    * @version 1.0
      */
      public class ListFor {
      @SuppressWarnings({"all"})
      public static void main(String[] args) {
      //List 接口的实现子类 Vector LinkedList
      //List list = new ArrayList();
      韩顺平循序渐进学 Java 零基础
      第 620页
      //List list = new Vector();
      List list = new LinkedList();
      list.add("jack");
      list.add("tom");
      list.add("鱼香肉丝");
      list.add("北京烤鸭子");
      //遍历
      //1. 迭代器
      Iterator iterator = list.iterator();
      while (iterator.hasNext()) {
      Object obj = iterator.next();
      System.out.println(obj);
      }
      System.out.println("=====增强 for=====");
      //2. 增强 for
      for (Object o : list) {
      System.out.println("o=" + o);
      }
      System.out.println("=====普通 for====");
      //3. 使用普通 for
      for (int i = 0; i < list.size(); i++) {
      System.out.println("对象=" + list.get(i));
      }
      }
      }
    

    ArrayList基本等同于Veror,但ArrayList线程不安全

image-20211101183751639

ArrayList和Linklist都是线程不安全的,所以在单线程,没有实现线程并发时再在这俩里面做选择

Map

package practise;
​
​
import java.util.HashMap;
import java.util.Map;
​
public class practise {
    public static void main(String[] args) {
    Map map=new HashMap();
    map.put("no1","本伟");//k-V key不允许重复key(只能有一个null1),value可以重复(可以有多个null)
    map.put("no2","dd");
    map.put("no1","erzi");//有相同的key时等价于替换
        //常用String作为key的类型,但是Object其他的类型也行
        System.out.println(map);
        System.out.println(map.get("no2"));//返回no2对应的value
    }
}

Map遍历

package com.hspedu.map_;
import java.util.*;
/**
* @author 韩顺平
* @version 1.0
*/
@SuppressWarnings({"all"})
public class MapFor {
public static void main(String[] args) {
Map map = new HashMap();
map.put("邓超", "孙俪");
map.put("王宝强", "马蓉");
map.put("宋喆", "马蓉");
map.put("刘令博", null);
map.put(null, "刘亦菲");
map.put("鹿晗", "关晓彤");
//第一组: 先取出 所有的 Key , 通过 Key 取出对应的 Value
Set keyset = map.keySet();
//(1) 增强 for
System.out.println("-----第一种方式-------");
for (Object key : keyset) {
System.out.println(key + "-" + map.get(key));
}
//(2) 迭代器
System.out.println("----第二种方式--------");
Iterator iterator = keyset.iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
System.out.println(key + "-" + map.get(key));
}
//第二组: 把所有的 values 取出
Collection values = map.values();
//这里可以使用所有的 Collections 使用的遍历方法
//(1) 增强 for
System.out.println("---取出所有的 value 增强 for----");
for (Object value : values) {
System.out.println(value);
}
//(2) 迭代器
System.out.println("---取出所有的 value 迭代器----");
Iterator iterator2 = values.iterator();
while (iterator2.hasNext()) {
Object value = iterator2.next();
韩顺平循序渐进学 Java 零基础
第 671页
System.out.println(value);
}
//第三组: 通过 EntrySet 来获取 k-v
Set entrySet = map.entrySet();// EntrySet<Map.Entry<K,V>>
//(1) 增强 for
System.out.println("----使用 EntrySet 的 for 增强(第 3 种)----");
for (Object entry : entrySet) {
//将 entry 转成 Map.Entry
Map.Entry m = (Map.Entry) entry;
System.out.println(m.getKey() + "-" + m.getValue());
}
//(2) 迭代器
System.out.println("----使用 EntrySet 的 迭代器(第 4 种)----");
Iterator iterator3 = entrySet.iterator();
while (iterator3.hasNext()) {
Object entry = iterator3.next();
//System.out.println(next.getClass());//HashMap$Node -实现-> Map.Entry (getKey,getValue)
//向下转型 Map.Entry
Map.Entry m = (Map.Entry) entry;
System.out.println(m.getKey() + "-" + m.getValue());
}
}
}

\