SpringBoot ,Controller层 通用的返回类,自定义集合类

导读:本篇文章讲解 SpringBoot ,Controller层 通用的返回类,自定义集合类,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

SpringBoot ,Controller层 通用的返回类,自定义集合类

	    public static void main(String[] args) {

        EnhanceList<String> aspect = new EnhanceList<>(true);

        for (int i = 0; i < 11; i++) {
            aspect.setValue(i,"test"+i);
        }

        System.out.println("第五个值:"+aspect.getMapValue(5));
        System.out.println("第六个值:"+aspect.getMapValue(6));

        System.out.println("大小:"+aspect.size());
        System.out.println("第一个值:"+aspect.first());
        System.out.println("最后一个值:"+aspect.last());
        Map<String, String> all = aspect.getAllMap();

        System.out.println("全部数据 = " + all);


        aspect.addValue("list1");
        aspect.addValue("list2");
        aspect.addValue("list3");

        System.out.println("第一个值:"+aspect.getListValue(0));
        System.out.println("第二个值:"+aspect.getListValue(1));
        System.out.println("aspect.getAllList() = " + aspect.getAllList());
    }
输出:
第五个值:test5
第六个值:test6
大小:11
第一个值:test0
最后一个值:test10
全部数据 = {0=test0, 1=test1, 2=test2, 3=test3, 4=test4, 5=test5, 6=test6, 7=test7, 8=test8, 9=test9, 10=test10}
第一个值:list1
第二个值:list2
aspect.getAllList() = [list1, list2, list3]
源码:
public class EnhanceList<V> {

    private transient V first;

    private transient V last;

    private transient boolean repetition;

    private final Map<String,V> grid;

    private List<V> list;

    private final List<Integer> duplicateGrid = new Vector<>();


    public EnhanceList() {
        grid = new HashMap<>();
        list = new ArrayList<>();
    }

    public EnhanceList(boolean repetition) {
        grid = new HashMap<>();
        list = new ArrayList<>();
        this.repetition = repetition;
    }

    public boolean setValue(Integer num, V v){
        theSizeOfTheDecision(num);
        add(num,v);
        return true;
    }

    public boolean addValue(V v){
        list.add(v);
        return true;
    }

    public V getListValue(int index){
        return list.get(index);
    }

    public Map<String,V> getAllMap(){
        return grid;
    }

    public List<V> getAllList(){
        return list;
    }

    public V getMapValue(Integer num){
        return grid.get(hash(num));
    }

    public int size(){
        return grid.size();
    }

    public V first(){
        return getMapValue(duplicateGrid.get(0));
    }

    public V last(){
        return last;
    }

    private void add(Integer num, V v){
        if (num < 0){
            throw new IllegalArgumentException("Illegal num: "+
                    num);
        }
        if (first == null){
            first = v;
        }
        grid.put(hash(num),v);
        last = v;
    }

    static String hash(Object key) {
        int h;
        return  String.valueOf((key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16));
    }

    /**
     * 检测是否有重复的值 构造方法开启true
     * @param num
     */
    private void theSizeOfTheDecision(Integer num){
        if (repetition){
            if (duplicateGrid.contains(num)) {
                throw new IllegalArgumentException("repetition num: "+
                        num);
            }
        }
        duplicateGrid.add(num);

    }


}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/112573.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!