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);
    }
原文地址:https://www.cnblogs.com/jingyukeng/p/8883001.html