All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.zhxu.data.ListMap Maven / Gradle / Ivy

The newest version!
package cn.zhxu.data;

import java.util.List;
import java.util.Map;
import java.util.function.BiConsumer;

/**
 * 一个 Key 可以有多个 Value 的 有序 Map 集合,内部使用 {@link List } 实现
 * @author troy zhou
 * @since v1.4.0
 * @param  泛型 值
 */
public interface ListMap extends Map {

    /**
     * 向 Map 里放值
     * @param key 键
     * @param value 值
     * @return always null
     */
    V put(String key, V value);

    /**
     * 获取与指定 key 匹配的最后(新)的一个值
     * @param key 键
     * @return 最后(新)的一个值
     */
    V get(Object key);

    /**
     * 获取与指定 key 匹配的最后(新)的一个值
     * @param key 键
     * @param ic 匹配 key 时是否忽略大小写
     * @return 匹配 key 的最后(新)的一个值
     */
    V get(String key, boolean ic);

    /**
     * 获取与指定 key 匹配的所有值列表
     * @param key 键
     * @return List
     */
    default List list(String key) {
        return list(key, false);
    }

    /**
     * 获取与指定 key 匹配的所有值列表
     * @param key 键
     * @param ic 匹配 key 时是否忽略大小写
     * @return List
     */
    List list(String key, boolean ic);

    /**
     * 替换与指定 key 匹配的最后(新)的一个值
     * @param key 键
     * @return 被替换的值
     */
    V replace(String key, V value);

    /**
     * 替换与指定 key 匹配的最后(新)的一个值
     * @param key 键
     * @param ic 匹配 key 时是否忽略大小写
     * @return 被替换的值
     */
    V replace(String key, V value, boolean ic);

    /**
     * 替换与指定 key 匹配的所有值
     * @param key 键
     * @return 被替换的键值对数量
     */
    default int replaceAll(String key, V value) {
        return replaceAll(key, value, false);
    }

    /**
     * 替换与指定 key 匹配的所有值
     * @param key 键
     * @param ic 匹配 key 时是否忽略大小写
     * @return 被替换的键值对数量
     */
    int replaceAll(String key, V value, boolean ic);

    /**
     * 遍历,该方法是为兼容 Android 低版本
     * @param action The action to be performed for each entry
     */
    void forEach(BiConsumer action);

    /**
     * 移除与指定 key 匹配的最后(新)一个值
     * @param key 键
     * @return the value was removed
     */
    V remove(Object key);

    /**
     * 移除与指定 key 匹配的最后(新)一个值
     * @param key 键
     * @param ic 匹配 key 时是否忽略大小写
     * @return the value was removed
     */
    V remove(String key, boolean ic);

    /**
     * 移除与指定 key 匹配的所有值
     * @param key 键
     * @return the value was removed
     */
    default List removeAll(String key) {
        return removeAll(key, false);
    }

    /**
     * 移除与指定 key 匹配的所有值
     * @param key 键
     * @param ic 匹配 key 时是否忽略大小写
     * @return the value was removed
     */
    List removeAll(String key, boolean ic);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy