2019-2-22

一、集合框架

  如果不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,可以使用JAVA集合框架 

二、JAVA集合框架提供了一套性能优良、使用方便的接口和类,它们位于JAVA.UTIL包中

  1、Iterator:迭代器

  2、Collection:集合框架接口

  3、Map:集合框架接口

  4、List与Set:Collection的子接口

  5、ArrayList与LinkedList为List的实现类

  6、HashSet与TreeSet为Set的实现类

  7、HashMap与TreeMap为Map的实现类

  8、Collections与Arrays:算法

      

      

 三、JAVA集合框架包含的内容

  Collection:接口存储一组不唯一,无序的对象

  List:接口存储不唯一,有序的对象

  Set:接口存储唯一,无序的对象

  Map:接口存储一组键值对象,提供kdy到value的映射

        

 四、List接口的实现类

  1、ArrayList实现长度可变的数组,在内存中分配连续的空间。遍历元素和随访问元素的效率比较高

  2、LinkedList采用链表存储方式。插入、删除元素进效率比较高

  3、遍历ArrayList的方法:1)、普通for循环;2)、增强for循环;3)、迭代器

  4、遍历LinkedList的方法:1)、普通for循环;2)、增强for循环;3)、迭代器

  5、遍历Set的方法:1)、增强for循环;2)、迭代器;3)集合.foreach(System.out::println);

     

  

    

   

   

   

 五、Set接口存储一组唯一,无序的对象

  HashSet是Set的实现类

  Set存储对象的引用

六、Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作,最常用的实现类的HashMap

  Hashtable键不可为空,Hashmap键可以为空;

  1、Map接口常用方法

·  

  2、Map集合遍历

  方法1:通过迭代器Iterator实现遍历

  方法2:增强型for循环

  方法3:键值对

 作业:

package com.java_student;
/**
 * 2019-2-22
 */
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class StuTest {
	public static void main(String[] args) {
		Scanner cxj = new Scanner(System.in);
		Student stu1 = new Student("陈历","男");
		Student stu2 = new Student("吴蕊","女");
		Student stu3 = new Student("吴燕婷","女");
		Student stu4 = new Student("刘金","男");
		
		Map<String, Student> m = new HashMap<String, Student>();
		
		m.put("CL", stu1);
		m.put("WL", stu2);
		m.put("WYT", stu3);
		m.put("LJ", stu4);
		
		System.out.println(m.remove("CL"));//通过键删除,返回值
		
		System.out.println(m.remove("WL", stu2));//通过键值删除
		
		//遍历所有键与值
		Set<String> set1 = m.keySet();
		for(String str : set1) {
			System.out.print("学员的简称:"+str+"\t");
			System.out.println(m.get(str));
		}
		
		System.out.println(m.containsKey("WL"));//判断是否存在键为"WL"的值
		System.out.println(m.containsValue(stu2));//判断是否存在值为"stu2"
		
		//遍历所有值
		Collection<Student> co = m.values();
		for(Student stu : co) {
			System.out.println(stu);
		}
		
		//遍历所有键
		Set<String> set = m.keySet();
		for(String str : set) {
			System.out.println("各个学员的简称:"+str);
		}
		
		//查询是否有输入的的键的值
		System.out.print("请输入要查询的学员英文简称:");
		String t = cxj.next();
		if(m.containsKey(t)) {
			System.out.println(t+"对应的性名是学员"+m.get(t).getName()+",性别是:"+m.get(t).getSex());
		}else {
			System.out.println("无此学员!");
		}
		
	}
}

  

package com.java_student;
/**
 * 学员类
 * @author Administrator
 *
 */
public class Student {
	private String name;//学员姓名
	private String sex;//学员性别
	
	public Student() {}
	
	public Student(String name, String sex) {
		this.name = name;
		this.sex = sex;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "学员:" + name + "\t性别:" + sex;
	}
	
	
}

  结果示例:

 

猜你喜欢

转载自www.cnblogs.com/chenxj/p/10409120.html