美文网首页
集合(诞生自1.2版本)

集合(诞生自1.2版本)

作者: 极客_Ls | 来源:发表于2018-05-17 19:42 被阅读5次

    1.2版本以前:

    使用数组,读取数据快,但是数组的长度固定,且只能存放一种数据类型数据
    使用vector、stack、properties 。缺点:缺乏统一的操作方式、不易扩展

    1.2版本之后,诞生了集合框架

    优点:性能提高、操作统一、提高了扩展性、实现了Iterator接口
    迭代器:提供了访问元素的统一方法

    常用接口和实现类:

    集合关系.png
    collection是所有集合的父类接口,不包含Map。
    Set继承自collecttion,不允许出现相同元素。
    List继承自Collection,以列表形式存储集合。

    ArryList(数组列表)

    如果没有指定长度,那么长度就默认为10

    ArryList的下标和数组一样以0开始
    //ArryList
    public static void main(String[] args){
            //定义一个ArryList类型的集合类
            ArrayList<String> arr = new ArrayList<>();
            //添加元素"a'、"b"、"c"、"d"
            arr.add("a");
            arr.add("b");
            arr.add("c");
            arr.add("d");
            arr.add("e");
            //打印集合arr的长度
            System.out.println("arr的长度是:"+arr.size());
            //打印集合arr的所有元素
            System.out.println(arr);
            //集合的第一个元素
            System.out.println(arr.get(0));
            //在第一个前面添加一个元素"f"
             arr.add(0,"f");
            //修改元素
            arr.set(1,“LaiShuai”);
    
    }
    
    
    ArryList和数组的交互
    1:将ArryList转化为数组:
    
    String[] arr1 = new String[arr.size()];
    arr1 = arr.toArray(arr1);
    for(String o: arr1){            System.out.print(o+"  ");
    }
    
    2://直接将集合1的值赋给集合二
    
     ArrayList<String> arr2 = new ArrayList<>(arr);
     System.out.println(arr2);
    
    可扩容
    ArrayList<String> arr3 = new ArrayList<>(2);//指定arr3的长度为2
            arr3.add("1");
            arr3.add("2");
            arr3.add("3");
            arr3.add("4");
            System.out.println(arr3);
    

    LinkedList(链表)

    LinkedList<String> list = new LinkedList<String>();
            list.add("LaiShaui");
            list.add("笨蛋");
            list.addLast("sm");
            list.addFirst("hy");
            System.out.println(list);
            LinkedList<String> list2 = new LinkedList<String>();
            list.addAll(list);
            System.out.println(list2);
            list.ppll//获得并移除列表表头
            list.peek//获得但不移除表头
    

    Set

    HashSet

    默认长度为16 ,不允许存储相同的数

    表的位置:A%16=X ;X就是A的位置

     HashSet set = new HashSet();
            set.add("a");
            set.add("z");
            set.add("q");
            set.add("x");
            set.add("c");
            System.out.println("我是SET:"+set.toString());
            String[] setArr = new String[set.size()];
            set.toArray(setArr);
            System.out.print("我是setArr:");
            HashSet hs = new HashSet();
    
            for(String o : setArr){
                System.out.print(o+"   ");
                hs.add(o);
            }
            System.out.println();
            System.out.println(hs);
    

    迭代器Iterate

    HashSet Set = new HashSet();
            Set.add("a");
            Set.add("a");
            Set.add("a");
            Set.add("a");
            Iterator it = Set.iterator();
            while (it.hasNext()){
                System.out.print(it.next()+"    ");
            }
    

    MAP

    map里的键值是成对存在,且key是唯一的

    HashMap:

    HashMap<Integer,String> HM = new HashMap<Integer,String>();
            HM.put(1001,"LaiShuai");
            HM.put(1002,"LaiShuai");
            HM.put(1003,"LaiShuai");
            Collection<String> Va = HM.values();
            Set<Integer> NO = HM.keySet();
            for(Integer o : NO){
                System.out.println("学号:"+o +"   姓名:"+HM.get(o));
    
            }
    

    ArrayList查询多,增加和删除比较少

    LinkedList增加删除比较多,查询比较少

    作业:

    从控制台中录入学生信息,包含学号、姓名、性别,用集何保存。保存好的跟据学生姓名去查找此学生的所有信息。然后再打印一下所有学生的信息。

    
    import java.awt.*;
    import java.util.Map;
    import java.util.Scanner;
    
    public class Student {
        private Integer ID;
        private String name;
        private String sex;
        static Scanner sc = new Scanner(System.in);
        public Student(int  id,String name,String sex){
            this.ID=id;
            this.name=name;
            this.sex=sex;
        }
        public Student(){
    
        }
        public void setsNO() {
            this.ID = sc.nextInt();
        }
        public void setName() {
            this.name = sc.next();
        }
    
        public void setSex() {
            this.sex = sc.next();
        }
    
        public String getName() {
            return name;
        }
    
        public int getID() {
            return ID;
        }
    
        public String getSex() {
            return sex;
        }
        public void ToString(){
            System.out.println("学号:"+this.ID  +"\t"+"   姓名:"+this.name+"\t"+"   性别:"+ this.sex);
        }
        public void Found(){
            System.out.println("请输入您要找的学生姓名:");
            getName();
    
        }
    }
    
    import java.util.*;
    
    public class Text {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            Map<Integer,Student> st = new HashMap<Integer, Student>();
            System.out.println("请录入第"+1+"位同学的学号,姓名,性别");
            Student  student1= new Student(sc.nextInt(),sc.next(),sc.next());
            st.put(student1.getID(),student1);
            System.out.println("请录入第"+2+"位同学的学号,姓名,性别");
            Student  student2= new Student(sc.nextInt(),sc.next(),sc.next());
            st.put(student2.getID(),student2);
            System.out.println("请录入第"+3+"位同学的学号,姓名,性别");
            Student  student3= new Student(sc.nextInt(),sc.next(),sc.next());
            st.put(student3.getID(),student3);
            System.out.println("请录入第"+4+"位同学的学号,姓名,性别");
            Student  student4= new Student(sc.nextInt(),sc.next(),sc.next());
            st.put(student4.getID(),student4);
            System.out.println("请录入第"+5+"位同学的学号,姓名,性别");
            Student  student5= new Student(sc.nextInt(),sc.next(),sc.next());
            st.put(student5.getID(),student5);
            for(int i=1; i<(st.size()+1); i++){
                Student s = st.get(i);
                s.ToString();
            }
            {
                System.out.println("请输入您要查找的学生姓名:");
                    for (int i = 1; i < (st.size() + 1); i++) {
                        if (st.get(i).equals(sc.next())) ;
                        st.get(i).ToString();
                    }
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:集合(诞生自1.2版本)

          本文链接:https://www.haomeiwen.com/subject/dlabdftx.html