zoukankan      html  css  js  c++  java
  • Collection子接口

                                                  list接口

         上一章介绍了collection接口,知道他是一个位于顶端的接口,他有许多子类,今天我们来看两个比较常用的子类,list和set

    首先list集合

    List接口的常用子类有:

    1ArrayList集合

    2 LinkedList集合

    list集合是带有索引的,因此List集合迭代方式除了使用迭代器之外,还可以使用索引进行迭代。

            

    for (int i = 0; i < list.size(); i++) {
        String str = list.get(i);
        System.out.println(str);            
    }

    和数组一样,可以用for循环输出

    list集合的数据存储结构:

    首先数据存储的常用结构有:栈,队列,数组,链表

    栈:是一种先入后出的存储结构,就是先进去的元素存入栈底,最后进入的元素进入栈顶

    我们常用top指针来判断栈空或者栈满,还有元素的地址位置

    1.进栈(PUSH)算法
    ①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);
    ②置TOP=TOP+1(栈指针加1,指向进栈地址);
    ③S(TOP)=X,结束(X为新进栈的元素);
    2.退栈(POP)算法
    ①若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);
    ②X=S(TOP),(退栈后的元素赋给X):
    ③TOP=TOP-1,结束(栈指针减1,指向栈顶)。
     
     
    队列:
    刚才介绍了栈,现在来看看队列的介绍,队列是一种先进先出的线性表,他有队首指针和队尾指针,
    front和rear,当这两个指针指向同一个位置时,对空
     
    链表:链表分为单链表,双链表和循环链表
    链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
     
     
     

                                       set接口

            前面的几个接口都可以放重复元素,但是set接口不允许放重复元素

     HashSet集合存储数据的结构(哈希表)

    public static void main(String[] args) {
            // TODO Auto-generated method stub
            Set<String> set=new HashSet<String>();
            set.add("今天中午吃什么");
            set.add("1");
            set.add("排骨面");
            //因为没有索引值,所以不能用简单的for循环遍历
            Iterator<String> it=set.iterator();
            while(it.hasNext()){
                System.out.println(it.next());
            }
            for(String str:set){
                System.out.println(str);
            }
        }

    哈希表又叫散列表,是通过关键码值来直接访问的数据结构,大大提高了数据查询的速度,它通过把关键码值映射到表中一个位置来访问记录,这个映射函数

    又叫散列函数

                                      map接口

      前面介绍的几种接口,元素都是孤立存在的,但是map接口,存储的元素是由键和值一起存在的

    //自定义类做键的时候,一定要重写hascode和equals方法
        public static void key(){
            HashMap<person,String> hs=new HashMap<person,String>();
            hs.put(new person("aaa",18),"java");
            hs.put( new person("bbb",21),"php");
            hs.put( new person("aaa",18),"net");
            hs.put(new person("ccc",21),"java");
            System.out.println(hs);
        }
        public static void valuee(){
            HashMap<String,person> hs=new HashMap<String,person>();
            hs.put("java", new person("aaa",18));
            hs.put("php", new person("bbb",21));
            hs.put("net", new person("aaa",18));
            hs.put("java",new person("ccc",21));
            System.out.println(hs);
        }
  • 相关阅读:
    生命周期-BeanPostProcessor-后置处理器
    生命周期-@PostConstruct&@PreDestroy
    生命周期-InitializingBean和DisposableBean
    异常安全
    inline函数
    bool类型
    函数重载与默认参数
    C++强制转换
    引用
    new/delete表达式
  • 原文地址:https://www.cnblogs.com/jingyukeng/p/8883001.html
Copyright © 2011-2022 走看看