美文网首页
集合(诞生自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版本)

    1.2版本以前: 使用数组,读取数据快,但是数组的长度固定,且只能存放一种数据类型数据使用vector、stack...

  • Java 集合框架总结(一)

    集合概述 Java集合框架标准化了Java处理对象组的方式。Java集合框架在JDK1.2版本提出,在JDK1.5...

  • 2020-07-24

    集合(一) 为了解决数组的定长问题, JDK在1.2版本开发了集合框架, 集合和数组的相同点和不同点 集合是容器,...

  • Collection体系的常用类及其背后的数据结构

    前言:Collection是最基本的集合接口,在JDK 1.2版本被引入到Java的世界中来。Collection...

  • C# 虹软人脸识别SDK2.0版实例

    虹软SDK推出了2.0版本,这个版本的所有API都集合在一个动态库里面,再通过引擎库调用,比1.2版本相对轻便了很...

  • ArcFace2.0版C#实例二次封装研究

    虹软SDK推出了2.0版本,这个版本的所有API都集合在一个动态库里面,再通过引擎库调用,比1.2版本相对轻便了很...

  • 集合

    集合的分类 一、Collection 1、list集合 1.1 ArrayList集合 1.2 LinkedLis...

  • Git学习笔记

    Git教程 一、Git简介 1.1. Git的诞生1.2.集中式的vs分布式 二、安装Git 三、创建版本库 四、...

  • kotlin 集合 list

    1 kotlin 集合分类可变集合不可变集合 1.1 创建不可变List 1.2 创建可变集合 2.2使用for循...

  • java基础-day16-list集合

    List集合 1. List集合 1.1 List集合特征 1.2 List常用方法 2. ArrayList 可...

网友评论

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

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