集合2

集合框架结构

一、概念:

集合框架由一组用来操作对象的接口组成,不同的接口描述一组不同的数据类型。

 

二、结构和分类:

object是基类,其下有Map接口和Collection接口,其中Map有

HashMap和TreeMap两个子接口,而Collection有list和set两个接口,

list有Hashset和TreeSet,list有ArrayList和LikedList两个子接口。

 

三、特点:

1.Collection接口存储一组允许重复、无序的对象。

2.set接口继承Collection接口,存储一组唯一(不允许重复)、无序的对象。(类似于数学的集合

3.List接口继续了Collection接口,存储一组不唯一的(允许重复)、有序(以元素插入的次序来放置元素,不会重新排列)的对象。(与数学的集合概念完全相反

4.Map接口存储一组成对的键——值对象,提供key(键)到value(值)的映射。Map中的key不要求有序,不允许重复。value同样不要求有序,且允许重复。

 

*List接口

List接口有序的集合,它继承了Collection的所有的方法,且添加了一些自己的方法。

 

*List实现类———1.ArrayList

特点:

1.长度可变,类似于一个动态数组。

2.集合中元素的存放顺序于添加顺序一致。

 

*List实现类——2.LinkedList

若需要频繁地插入和删除,一般用LinkedList,LinkedList类似于数据结构中的双向链表。

 

package kgy.util;
import Java.util.LinkedList;
import Java.util.List;
publi class StudentLinkedListTest{
    public static void main(String[] args) {
        /*根据班级名称获取班级学生信息*/
        List <Student>students=StudnetBiz.getStudents("12网编1");
        LinkedList <student>11=new LinkedList <Student>(students);
        System.out.println("12网编1班共有"+11.size()+"名学生!");//获取学生人数
        Student s1=new Student("1","张三",0);
        Student s2=new Student("2","李四",0);
        li.addFirst(s1);
        System.out.println("12网编1班共有"+11.size()+"名学生!");
        System.out.println("本班是否有李四这个学生?"+11.contains(s2));
        System.out.println("将第一个元素弹栈:"+11.pop());
    }
}
//编译不通过

 

*Set接口(概念类似于数学中的集合)

特点:Set不包含e1.equals(e2)的元素对e1和e2,并且最多包含一个null元素。  //? ?

若两次插入同一个元素,其实只会存储一个元素,而不是两个。

说明:Set不提供get方法,必须通过迭代器Iterator才可以遍历元素。

package kgy.util;
import Java.util.HashSet;
import Java.util.Iterator;

import Java.util.set;

public class StudentHashTest{
    public static void main(String[] args) {
        Set <Student>set=new HashSet<Student>();

        Student s1=new Student("1","张三",0);
        Student s2=new Student("2","李四",0);

        set.add(s1);
        set.add(s2);
        System.out.println("set共有"+set.size()+"名学生!");
        set.add(s2);
        set.add(s1);
        System.out.println("set共有"+set.size()+"名学生!");

        /*遍历set中所有的元素*/
        Iterator <Student>it=set.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }

    }
}

 

*Map接口(特点总结:级联、映射)

特点:Map接口专门用于处理键值对映射数据的存储,Map中键不可重复,值可以

重复。 

使用场景:ArrayList能让用户用数字在一个对象序列里面选择,即它将数字和

对象关联。若想更具某一条件去选择在对象序列中选择的话,就要用到Map

接口,就是讲键映射到值的对象。一个映射不能包含重复的键,每个键最多只能

映射一个值。

 

package kgy.util;
import Java.util.HashMap;
import Java.util.Iterator;
import Java.util.Map;

public class StudentHashMapTest{
    public static void main(String[] args) {
        Map <String,Student>map=new HashMap<String,Student>();

        Student s1=new Student("1","张三",0);
        Student s2=new Student("2","李四",0);
        map.put("1",s1);
        map.put("2",s2);
       //用法??
        System.out.println("Map中共有"+map.size()+"名学生!");
        map.put("3",s2);
        System.out.println("map中共有"+map.size()+"名学生!");
        System.out.println(map.keySet());
        System.out.println(map.values());

        /*通过键很容易找到相应的值*/
        Student sn=map.get("3");
        System.out.println(sn);

        /*遍历map中所有的元素*/
        System.out.println("开始遍历所有元素");
        Iterator <Student>it=map.values().iterator;
        while(it.hasNext()){
           //hasNext用法??
            System.out.println(it.next());
        }
    }
}

 

//编译有问题

//速度上比ArrayList快,它是通过hash码直接索引而来

成年人的世界没有那么多的童话,也没有那么多的逆袭。
原文地址:https://www.cnblogs.com/shijinglu2018/p/8395014.html