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("员工姓名"+ "\t员工薪资\n");
        for(int i = 0; i < list.size();i++) {
            System.out.println(((Employee)(list.get(i))).getName()+"\t"+((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("\n使用EntrySet进行输出:");
        Set<Entry<Integer, String>> entry = hm.entrySet();
        for(Entry<Integer,String> x:entry) {
            System.out.print(x.getKey()+"-");
            System.out.println(x.getValue());
        }
    }
    
}    

猜你喜欢

转载自www.cnblogs.com/conglingkaishi/p/9253081.html