集合类------List、Map、Set的用法

目录

1.List接口(线性表) 

2.Set接口

3.Map接口(做题用的最多的集合)

4.源代码


1.List接口(线性表) 

增加

ArrayList:动态数组,保存元素的个数不确定

LinkedList:链表

add(任意类型,新值)     add(int index,任意数据类型) 在索引为index的位置插入新元素

默认add方法在集合末尾添加

查找:

get(index):返回index位置的元素值

boolean contains(元素值):判断List是否包含指定值

修改

set(int index,新值):修改index的元素为新元素,返回修改前的元素值

删除

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

remove(元素值):按值删除,默认删除出现的第一个元素

遍历List和Set集合非常方便,使用for each 循环即可

若不是遍历具体的每个值,而是想打印一下集合的内容,直接println方法传入即可(集合类都覆写了toString方法)

2.Set接口(一次存储一个不重复元素)

Set、Map天然是一个查找或搜索的语义

应用:很方便的去重处理

可以利用Set集合的add方法的返回值对第一次出现的元素做特殊处理

 元素的添加顺序和插入顺序没有太大关系(因为hash值不一定有序)

Set集合的查找:contains

如果现在需要插入顺序和存储顺序相同,用LinkedHashSet

Set集合没有修改元素的方法,只能把这个元素删除再添加一个新元素

3.Map接口:

List接口和Set接口都是一次存储一个元素,Map接口是一个映射关系,一次存储俩个元素key=value。(键值对关系) 

Map中要求key不重复,value重复

3.1添加查找

查找:

方法一:V  value =map.get(key):根据key取出映射的value,若key不存在返回null

方法二:V value =map.getorDefault(key,default):根据key取出的映射的value,若key不存在返回null

判断当前Map是否包含指定key值

key boolean containKey(key)

value boolean containsValue(value)

3.2删除

remove方法根据key值删除整个键值对

V remove (Object key);返回删除前的value值,若不存在key,返回null

3.3Map集合的遍历:一般不去遍历

3.3.1.获取当前Map中的所有key集合

因为key值唯一,所以返回的是一个Set集合。

3.3.2.获取当前Map中的所有value集合

value值可以重复,返回Collection(List的父接口),可以看作返回了List。

3.3.2.若想依次取出Map值遍历,需要将Map集合转为Set集合后进行遍历。

Map.Entry:此接口中存储的就是一个个键值对对象(这里认为key,value是一个对象,捆绑在一起)

 

4.源代码

package lcltest;

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

public class ListTest {
    public static void main(String[] args) {
        int[] data = {1,3,5,7,9,10,10,13};
        List<Integer> list = new ArrayList<>();
        for (int i : data) {
            list.add(i);
        }
        System.out.println(list);
        // for-each遍历集合
        for (int temp : list) {
            System.out.print(temp + " ");
        }
//        System.out.println(list.contains(10));
//        System.out.println(list.get(0));
    }
}

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

public class SetTest {
    public static void main(String[] args) {
//        int[] data = {1,2,3,3,4,5,4,6,6};
//        Set<Integer> set = new HashSet<>();//前面是接口
//        for (int i : data) {
//            set.add(i);
//        }
//        if (set.add(6)) {
//            System.out.println("添加成功");
//        }else {
//            System.out.println("元素6已经存在!");
//        }
//        System.out.println(set);
        String[] str = {"吴用", "鲁智深", "武松"};
        Set<String> set = new HashSet<>();
        for (String s : str) {
            set.add(s);
        }
        System.out.println(set.contains("吴用"));
        System.out.println(set);
    }
}
package lcltest;

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

public class MapTest {
    public static void main(String[] args) {
        // 学号和姓名的映射关系
        // 学号作为Key,姓名作为Value
        // Map<key,value>
        Map<Integer,String> map = new HashMap<>();
        map.put(1,"王淇");
        map.put(2,"王小熊");
        map.put(3,"李四");
        // 当key重复时,更新值即可
        map.put(1,"张三");
        // Map -> Set
        Set<Map.Entry<Integer,String>> entry = map.entrySet();
        // 使用for-each遍历
        for (Map.Entry<Integer,String> temp : entry) {
            System.out.println(temp.getKey() + "=" + temp.getValue());
        }
//        // 删除key对应的那个键值对
//        System.out.println(map.remove(10));
//        System.out.println(map);
//        System.out.println(map.containsKey("1"));
//        System.out.println(map.containsValue("王小熊"));
//        String ret = map.get(1);
//        System.out.println(ret);
//        // 返回null
//        System.out.println(map.get(10));
//        // 若key不存在,返回默认值
//        System.out.println(map.getOrDefault(10,"美女"));
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值