Java中的List、Map、Set的用法

目录

List接口

增加

查找

修改

删除

遍历

Set接口

注意

Map接口

添加/修改

查找

删除

 遍历


List接口

List接口(线性表接口):ArrayList(动态数组--要保存的元素个数不确定),LinkedList(链表)

增加

add(任意数据类型 新的值)add(int index,任意数据类型):在索引为index的位置上插入新元素,默认在集合尾部增加

查找

get(int index);返回index位置的元素值,

boolean contains(val):判断List中是否包含指定值

修改

set(int index ,newVal):修改index位置的元素,返回修改之前的元素值

删除

remove(int index):删除指定位置的元素

remove(val):删除指定元素,默认删除出现的第一个元素

集合类中如果用到基本数据类型,必须使用包装类

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

/**
 * @author happy
 */
public class ListTest {
    public static void main(String[] args) {
       int[] data = {1,2,3,4,5,7};
       List<Integer> list = new ArrayList<>();
        for (int i:data) {
            list.add(i);
        }
        System.out.println(list.contains(10));
        System.out.println(list.get(3));
        list.remove(1);
        System.out.println(list);
        int index = list.indexOf(7);
        list.remove(index);
        System.out.println(list);

//输出
false
4
[1, 3, 4, 5, 7]
[1, 3, 4, 5]
    }
}

遍历

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

/**
 * @author happy
 */
public class ListTest {
    public static void main(String[] args) {
       int[] data = {1,2,3,4,5,7};
       List<Integer> list = new ArrayList<>();
        for (int i:data) {
            list.add(i);
        }
        //[1, 2, 3, 4, 5, 7]打印这个数组
        System.out.println(list);
        for (int temp:list) {
            //1 2 3 4 5 7 分开打印每个元素
            System.out.print(temp+" ");
        }
    }
}

Set接口

Set接口:一次存储一个不重复元素

  • 元素的添加顺序和插入顺序没有太大关系(HastSet类)
  • Set接口是List接口的子接口,只是元素插入有了不重复的限制,其他用法和List接口差不多,需要注意的是Set没有修改方法

注意

  • 当向Set中添加了一个不重复的元素,返回true,如果Set已经有了需要添加的元素 ,不能再次添加,返回false
import java.util.HashSet;
import java.util.Set;

/**
 * @author happy
 */
public class SetTest {
    public static void main(String[] args) {
        int[] data = {1,2,2,3,4,6,7,7,8};
        Set<Integer> set = new HashSet<>();
        for (int i:data) {
            set.add(i);
        }
        if (set.add(2)){
            System.out.println("添加成功");
        }else {
            System.out.println("该元素已经存在");
        }
        System.out.println(set);
    }
}

//输出
该元素已经存在
[1, 2, 3, 4, 6, 7, 8]
  •  使用HastSet时,元素的插入顺序和时间存储数据无关
import java.util.HashSet;
import java.util.Set;

/**
 * @author happy
 */
public class SetTest {
    public static void main(String[] args) {
        String[] str = {"孙悟空","猪八戒","C"};
        Set<String> set = new HashSet<>();
        for (String s:str) {
            set.add(s);
        }
        //[C, 孙悟空, 猪八戒]
        System.out.println(set);
    }
}
  •  如果想要插入顺序和存储顺序一致,使用LinkedHashSet
import java.util.LinkedHashSet;
import java.util.Set;

/**
 * @author happy
 */
public class SetTest {
    public static void main(String[] args) {
        String[] str = {"孙悟空","猪八戒","C"};
        Set<String> set = new LinkedHashSet<>();
        for (String s:str) {
            set.add(s);
        }
        //[孙悟空, 猪八戒, C]
        System.out.println(set);
    }
}
  •  set.contains();方法,可以查找元素
import java.util.HashSet;
import java.util.Set;

/**
 * @author happy
 */
public class SetTest {
    public static void main(String[] args) {
        String[] str = {"孙悟空","猪八戒","C"};
        Set<String> set = new HashSet<>();
        for (String s:str) {
            set.add(s);
        }
        //false
        System.out.println(set.contains("D"));
    }
}

Map接口

Map接口:Map接口是一个映射的关系,一次存储两个元素 key = val(键值对应元素),key不重复,val可能重复,通过key值查找元素

添加/修改

put(key,val):将key和对应的val存储到Map中,如果key值存在,就修改val,如果key不存在,就添加val

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

/**
 * @author happy
 */
public class MapTest {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"小张");
        map.put(2,"小明");
        map.put(3,"小王");
        map.put(1,"小花");

        //{1=小花, 2=小明, 3=小王}
        System.out.println(map);
    }
}

查找

  • 根据指定的key查找val,如果不存在,返回null

        String ret = map.get(1);

        //小花
        System.out.println(ret);
  • 根据key取出映射的val,如果不存在,返回默认值
       map.getOrDefault(2,"空");

  • 判断当前Map中是否包含指定的key
        //true
        System.out.println(map.containsKey(2));
  • 判断当前Map中是否包含指定的val
        //false
        System.out.println(map.containsValue("小李"));

删除

  • 根据key删除,会删掉key和val
         map.remove(1);
        // {2=小明, 3=小王}
        System.out.println(map);
  • 删除key所在的键值对,返回删除前key对应的val值,如果不存在,返回null
        //null
        System.out.println(map.remove(10));

 遍历

  • 获取Map中的key集合

Map中key是唯一的,返回Set集合

  • 获取Map中的val集合

Map中val是可以重复的,返回Collection(List的父接口)

  • 如果需要依次取出Map中一个一个的键值对,需要将Map集合转换为Set集合再进行遍历

Map.Entry:这个接口存储的就是键值对(认为key=val是一个对象,将key和val捆绑在一起) 

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

/**
 * @author happy
 */
public class MapTest {
    public static void main(String[] args) {
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"小张");
        map.put(2,"小明");
        map.put(3,"小王");
        map.put(1,"小花");
        Set<Map.Entry<Integer,String>> entry = map.entrySet();
        for (Map.Entry<Integer,String> temp:entry) {
            System.out.println(temp.getKey() +"="+ temp.getValue());
        }
    }
}

//输出
1=小花
2=小明
3=小王

 

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习java的张三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值