`
小路青青0113
  • 浏览: 23233 次
  • 性别: Icon_minigender_2
文章分类
社区版块
存档分类
最新评论

Java集合框架

阅读更多
Java集合框架

Java中集合的定义在java.util包下,主要有三大类:
        java.util.Set接口及子类,Set提供的是一个无序、不可重复的集合,常用的实现类有HashSet,TreeSet,LinkedSet
       java.util.List接口及子类,List提供的是一个有序、可存重复数据的集合,常用的实现类有ArrayList,Vector,LinkedList
       java.util.Map接口及子类,Map提供了一个映射关机的集合,其中key不可重复,value可重复,常用的实现类有HashMap,Hashtable
其他常用的还有:Collection,Iterator,ListIterator,Enumeration,
              SortedSet,SortedMap,Queue,Map.Entry

Set和List都是继承了Collection接口的子接口,而Map是独立的集合接口,没有父类。

Collection中定义的如下方法,在Set或List的实现类中都可以使用:
boolean add(E e)
          向列表的尾部添加指定的元素(可选操作)。
boolean addAll(Collection<? extends E> c)
          添加指定 collection 中的所有元素到此列表的结尾,顺序是指定
            collection 的迭代器返回这些元素的顺序(可选操作)。
void clear()
          从列表中移除所有元素(可选操作)。
boolean contains(Object o)
          如果此 collection 包含指定的元素o,则返回 true。
boolean containsAll(Collection<?> c)
          如果此 collection 包含指定 collection 中的所有元素,则返回 true。
boolean equals(Object o)
          比较此 collection 与指定对象是否相等。
boolean isEmpty()
          如果此 collection 不包含元素,则返回 true。
Iterator<E> iterator()
          返回在此 collection 的元素上进行迭代的迭代器。
boolean removeAll(Collection<?> c)
          移除此 collection 中那些也包含在指定 collection 中的所有元素
           (可选操作)。
int size()
          返回此 collection 中的元素数。
Object[] toArray()
          返回包含此 collection 中所有元素的数组。


一、List
List的主要特征是其对象以线性方式存储,没有"特定"顺序,只有一个开头和一个结尾,它与根本没有顺序的集是不同的。List接口提供了多个实现的子类,提供有序的访问集合中元素的方法——可根据List中对象放入时的次序来查找对象。
List子类还有几个特有的方法:
      boolean addAll(int index,Collection<? extends E> c)
             将指定 collection 中的所有元素都插入到列表中的指定位置。
     E get(int index)
            返回列表中指定位置的元素。

public class ListTest {

	/**
	 * 主方法
	 * @param args
	 */
	public static void main(String[] args){
		ListTest lt = new ListTest();
		List<Student> list = lt.createList(20);
		System.out.println("所有学生信息:");
		lt.print(list);
		System.out.println("查找到的学生信息:");
		lt.queryStudent(list, 15);
		System.out.println("删除分数小于10的学生后的信息:");
		lt.deleteStudent(list, 10);
		lt.print(list);
	}
	
	/**
	 * 创建一个List集合对象,并设置一定的初始值
	 * @param size
	 * @return
	 */
	public List<Student> createList(int size){
		//实例化一个List集合的对象
		List<Student> list = new ArrayList<Student>();
		Random rd = new Random();
		//循环size次数,并给list集合添加size个学生对象
		for(int i=0;i<size;i++){
			String name = "学生"+((char)(65+i));
			list.add(new Student(name,rd.nextInt(20)));
		}
		return list;
	}

	/**
	 * 查找学生信息的方法
	 * @param list
	 * @param score
	 */
	public void queryStudent(List<Student> list,double score){
		for(int i=0;i<list.size();i++){
			Student stu = list.get(i);
			if(stu.getScore()==score){
				System.out.println(stu.toString());
			}
		}
	}
	
	/**
	 * 删除分数小于10的学生信息
	 * @param list
	 * @param score,删除时要比较的分数
	 */
	public void deleteStudent(List<Student> list,double score){
		System.out.println("=========================>");
		for(int i=0;i<list.size();i++){
			Student stu = list.get(i);
			if(stu.getScore()<score){
				list.remove(i);
				i--;
			}
		}
	}
	
	/**
	 * 打印学生信息
	 */
	public void print(List<Student> list){
		for(int i=0;i<list.size();i++){
			Student stu = list.get(i);
			System.out.println(stu.toString());
		}
	}	
	
}




二、Set
Set提供的是无序的集合,不能根据索引取,需要用到迭代器。查找、删除、打印方法都有所不同。

public class SetTest {

	/**
	 * 主方法
	 * @param args
	 */
	public static void main(String[] args){
		 SetTest st = new SetTest();
		 Set<Student> set = st.createSet(20);
		 System.out.println("所有学生信息");
		 st.print(set);
		 System.out.println("查找到的学生信息:");
		 st.queryStudent(set, 15);
		 System.out.println("删除分数小于10的学生后的信息:");
		 st.deleteStudent(set, 10);
		 st.print(set);
	} 
	
	/**
	 * 创建一个Set集合对象,并设置一定的初始值
	 * @param size
	 * @return
	 */
	public Set<Student> createSet(int size){
		//实例化一个Set集合的对象
		Set<Student> set = new HashSet<Student>();
		Random rd = new Random();
		//循环size次数,并给set集合添加size个学生对象
		for(int i=0;i<size;i++){
			String name = "学生"+((char)+(65+i));
			set.add(new Student(name,rd.nextInt(20)));
		}
		return set;
	}
	
	/**
	 * 查找分数为15的学生,并输出信息
	 * @param set
	 * @param score
	 */
	public void queryStudent(Set<Student> set,double score){
		//获取Set集合的迭代器对象,Set集合中的对象是无序的,无法根据下标查找
		Iterator<Student> iter = set.iterator();
		while(iter.hasNext()){
			Student stu = iter.next();
			if(stu.getScore()==score){
				System.out.println(stu.toString());
			}
		}
	}
	
	/**
	 * 删除分数小于10的学生信息
	 * @param set
	 * @param score
	 */
	public void deleteStudent(Set<Student> set,double score){
		//获取Set集合的迭代器
		Iterator<Student> iter = set.iterator();
		//再新建一个Set集合,用来存放需要需要删除的对象
		Set<Student> s = new HashSet<Student>();
		while(iter.hasNext()){
			Student stu = iter.next();
			
			if(stu.getScore()<score){
//				System.out.println(stu.getScore());
				s.add(stu);
			}
		}
		set.removeAll(s);
	}
		
	/**
	 * 打印学生信息
	 * @param set
	 */
	public void print(Set<Student> set){
		Iterator<Student> iter = set.iterator();
		while(iter.hasNext()){
			Student stu = iter.next();
			System.out.println(stu.toString());
		}
	}
		
}


三、Map
Map中存入的对象是一对一对的,即每个对象和它的名字(键)关联在一起。其中键key是不可重复的,值value可以重复。
在Map集合中使用Set集合获取key,再对key使用迭代器。
常用的方法有:
V put(K key, V value)
          将指定的值与此映射中的指定键关联(可选操作)。
void putAll(Map<? extends K,? extends V> m)
          从指定映射中将所有映射关系复制到此映射中(可选操作)。
V get(Object key)
          返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
boolean containsKey(Object key)
          如果此映射包含指定键的映射关系,则返回 true。
boolean containsValue(Object value)
          如果此映射将一个或多个键映射到指定值,则返回 true。
V remove(Object key)
          如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
int size()
          返回此映射中的键-值映射关系数。
Set<K> keySet()
          返回此映射中包含的键的 Set 视图。
Collection<V> values()
          返回此映射中包含的值的 Collection 视图。

public class MapTest {

	/**
	 * 主方法
	 * @param args
	 */
	public static void main(String[] args){
		MapTest mt = new MapTest();
		Map<String,Student> map = mt.createMap(20);
		System.out.println("所有学生信息:");
		mt.print(map);
		System.out.println("查找到的学生信息:");
		mt.queryStudent(map, 15);
		System.out.println("删除分数小于10后的学生信息");
		mt.deleteStudent(map, 10);
		mt.print(map);
	}
	
	/**
	 * 创建一个Map集合对象,并设置一定的初始值
	 * @param size
	 * @return
	 */
	public Map<String,Student> createMap(int size){
		Map<String,Student> map = new HashMap<String,Student>();
		Random rd = new Random();
		for(int i=0;i<size;i++){
			String name = "学生"+((char)+(65+i));
		    Student stu = new Student(name,rd.nextInt(20),"2012"+(i+1));
		    map.put(stu.getNumber(), stu);
		}
		return map;
	
	}
	
	/**
	 * 查找分数为15的学生,并输出信息
	 * @param map
	 * @param score
	 */
	public void queryStudent(Map<String,Student> map,double score){
		//获取到map集合的KeySet
		Set<String> set = map.keySet();
		Iterator<String> iter = set.iterator();
		while(iter.hasNext()){
			//获取下一个元素
			String key = iter.next();
			//根据key获取value
			Student stu = map.get(key);
			if(stu.getScore()==score){
				System.out.println(stu.toString());
			}
		}
	}
	
	/**
	 * 删除分数小于10的学生的信息
	 * @param map
	 * @param score
	 */
	public void  deleteStudent(Map<String,Student> map,double score){
		//set集合对象存储map的key
		Set<String> set = map.keySet();
		Iterator<String> iter = set.iterator();//迭代器指向set集合对象
		//用来存放需要删除的stu对象
		Set<String> s = new HashSet<String>();
		while(iter.hasNext()){
			String key = iter.next();
			Student stu = map.get(key);
			if(stu.getScore()<score){
				s.add(key);
			}
		}
		//迭代器指向s集合对象
		iter = s.iterator();
		while(iter.hasNext()){
			String key = iter.next();
			map.remove(key);
		}
	}
	
	/**
	 * 打印学生信息的方法
	 * @param map
	 */
	public void print(Map<String,Student> map){
		Set<String> set = map.keySet();
		Iterator<String> iter = set.iterator();
		while(iter.hasNext()){
			String key = iter.next();
			Student stu = map.get(key);
			System.out.println(stu.toString());
		}
	}
		
}






如有不足欢迎指正!




0
0
分享到:
评论

相关推荐

    【Java】Java集合框架思维导图。

    xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...

    Java集合框架详解

    Java集合框架是Java编程语言中的一个核心组成部分,它为存储、管理和操作对象提供了一套统一的接口和类。本文将深入解析Java集合框架的各个方面,包括Collection、List、Set和Map,以及它们的相关实现和使用原理。 ...

    Java集合框架总结

    ### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...

    java集合框架图

    ### Java集合框架详解 #### 一、Java集合框架概述 Java集合框架是Java标准库的重要组成部分,它提供了存储和操作对象的各种数据结构。通过使用集合框架,开发人员可以轻松地管理不同类型的数据集,并且能够利用...

    Java集合框架学习笔记

    Java集合框架是Java编程语言中一个至关重要的组成部分,它提供了数据结构和算法的抽象,使得开发者可以方便地存储和管理各种类型的数据。本篇将详细探讨Java集合框架的基础知识,包括核心接口、类的层级结构以及Java...

Global site tag (gtag.js) - Google Analytics