zoukankan      html  css  js  c++  java
  • Java_集合类

    Java 集合
      集合是工具类,用来存储任意数量的具有共同属性对象的容器;
    数组与集合的区别?
      数组适用于存储固定容量的数据,
      集合的数据是可以动态改变的,存储一对一的关系的数据,对数据进行频繁的增删等操作,数据重复的问题
    常用集合接口:List Set Map;

    集合框架的体系结构:


    List(列表):是一个接口,是元素有序并且可以重复的集合,称为序列,可以精确的控制每个元素的插入位置和删除
    主要的实现类:ArrayList和LinkedList
      ArrayList:底层是由数组实现的,动态增长
      适合于查找和更新数据
      ArrayList中得元素可以为NULL
    Set:元素无序并且不能重复,
      HashSet是Set接口的一个重要实现类,称为哈希集:
      Hashset中的元素是无序且不可以重复的,只允许存在一个NULL 元素
      具有良好的存取和查找功能

    Map:是以键值对<key,value>的形式存储数据
      <key,value>以Entry类型的对象实例存在的
      可以通过key快速的查找value
      一个value不能对应重复的key
      一个key最多只能映射到一个value
    HashMap:是Map的重要实现类:基于哈希表
      允许存在null值和null键;
      key值不允许重复
      hashmap中得Entry对象时无序排列的

    Iterator:迭代器接口:以统一的方式对集合元素进行遍历:
      hasNext()方法:检测集合是否存在下一个元素
      next()方法:返回集合中得下一个元素

    ArrayList案例:

    /**
     * 员工类
     */
    public class Employee {
        private int id;//员工id
        private String name;//员工姓名
        private double salary;//员工薪资
        
        
        public Employee(int id, String name, double salary) {
            super();
            this.setId(id); 
            this.setSalary(salary);
            this.setName(name);
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public double getSalary() {
            return salary;
        }
        public void setSalary(double salary) {
            this.salary = salary;
        }
        
    }
    /**
     * 员工测试类
     */
    import java.util.ArrayList;
    
    public class EmployeeTest {
    
        public static void main(String[] args) {
            Employee staff1 = new Employee(0001, "张三", 5000.0);
            Employee staff2 = new Employee(0002, "李四", 5500.0);
            Employee staff3 = new Employee(0003, "赵六", 4000.0);
            
            ArrayList<Object>  list = new ArrayList<>();
            list.add(staff1);
            list.add(staff2);
            list.add(staff3);
            
            System.out.print("员工姓名"+ "	员工薪资
    ");
            for(int i = 0; i < list.size();i++) {
                System.out.println(((Employee)(list.get(i))).getName()+"	"+((Employee)(list.get(i))).getSalary());
            }
        }
    
    }

    HashSet案例:

    /**
     * 学生类
     */
    public class Student {
        private int stuid;//学号
        private String name;//姓名
        private float score;//成绩
        public Student(int stuid, String name, float score) {
            this.setStuid(stuid);
            this.setName(name);
            this.setScore(score);
        }
        public int getStuid() {
            return stuid;
        }
        public void setStuid(int stuid) {
            this.stuid = stuid;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public float getScore() {
            return score;
        }
        public void setScore(float score) {
            this.score = score;
        }
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((name == null) ? 0 : name.hashCode());
            result = prime * result + Float.floatToIntBits(score);
            result = prime * result + stuid;
            return result;
        }
        @Override
        public boolean equals(Object obj) {
            if(this.getStuid() == stuid && this.getName().equals(name)) {
                return true;
            }else
                return false;
        }
        @Override
        public String toString() {
            return "[学号:" + stuid + ", 姓名:" + name + ", 成绩:" + score + "]";
        }
        
    }
    import java.util.HashSet;
    /**
     * 学生成绩测试类
     */
    public class StudentTest {
        public static void main(String[] args) {
            Student stu1 = new Student(3, "william", 65.0f);
            Student stu2 = new Student(1, "Tom", 87.0f);
            Student stu3 = new Student(2, "Lucy", 95.0f);
            Student stu4 = new Student(2, "Lucy", 95.0f);
            HashSet<Student> set = new HashSet<>();
            set.add(stu1);
            set.add(stu2);
            set.add(stu3);
            set.add(stu4);
            for(Student stu:set) {
                System.out.println(stu);
            }
        }
    }

    HashMap案例:

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map.Entry;
    import java.util.Set;
    
    public class Test {
        public static void main(String[] args) {
            HashMap<Integer,String> hm = new HashMap<Integer, String>();
            hm.put(2014, "德国");
            hm.put(2010, "西班牙");
            hm.put(2006, "意大利");
            hm.put(2002, "巴西");
            hm.put(1998, "法国");
            System.out.println("使用迭代器方式进行输出:");
            Iterator<String> it = hm.values().iterator();
            while(it.hasNext()) {
                System.out.print(it.next() + "  ");
            }
            System.out.println("
    使用EntrySet进行输出:");
            Set<Entry<Integer, String>> entry = hm.entrySet();
            for(Entry<Integer,String> x:entry) {
                System.out.print(x.getKey()+"-");
                System.out.println(x.getValue());
            }
        }
        
    }    
  • 相关阅读:
    基于 abp vNext 和 .NET Core 开发博客项目
    基于 abp vNext 和 .NET Core 开发博客项目
    基于 abp vNext 和 .NET Core 开发博客项目
    基于 abp vNext 和 .NET Core 开发博客项目
    数据结构 6 基础排序算法详解 冒泡排序、三层冒泡排序逐步优化方案详解
    数据结构 5 哈希表/HashMap 、自动扩容、多线程会出现的问题
    数据结构 4 时间复杂度、B-树 B+树 具体应用与理解
    数据结构 3 二叉查找树、红黑树、旋转与变色 理解与使用
    数据结构 2 字符串 数组、二叉树以及二叉树的遍历
    数据结构 1 线性表详解 链表、 栈 、 队列 结合JAVA 详解
  • 原文地址:https://www.cnblogs.com/conglingkaishi/p/9253081.html
Copyright © 2011-2022 走看看