`
小路青青0113
  • 浏览: 22757 次
  • 性别: 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集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结

    Java集合框架详解

    Java集合框架详解Java集合框架详解Java集合框架详解

    java集合框架图

    java集合框架图java集合框架图java集合框架图java集合框架图java集合框架图

    java集合框架面试题

    内含大量java集合框架方面常被面试官问到的经典面试题。

    Java集合框架.ppt

    集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中

    JAVA集合框架学习总结

    本文档为本人学习 java 集合框架期间的学习总结笔记,希望对新学习的朋友有所帮助和参考价值。本人java 开发时间不是太长,可能存在不完善或不对之处,欢迎指正!

    6.java集合框架.zip

    6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6....

    JAVA学习 Java集合框架.ppt

    JAVA学习 Java集合框架.ppt

    Java集合框架学习笔记

    学习Java集合框架的讲义、笔记,希望大家多提意见。时间关系没有Collections,Arrays的内容,以后补上!

    数据结构和Java集合框架 英文版

    学生通过学习方法描述和应用,可以逐步理解并有效地使用数据结构,还可以了解这些数据结构的多种实现,包括在Java集合框架中提供的一些实现。 本书内容非常丰富,且在每章章尾提供编程项目,以帮助学生提高实践能力...

    java 集合框架

    Java集合框架,set、list接口及其子集,接口的继承关系

    Java集合框架使用总结

    Java集合框架使用总结 前言: 本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看Java API文档。 一、概述 数据结构对程序设计...

    Java集合框架常见面试题夜间阅读版.pdf

    java集合框架

    一个扑克游戏,用于Java集合框架练习.zip

    一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合...

    java集合框架笔记

    List set ArraryList Map java集合框架笔记 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用

    数据结构和Java集合框架

    数据结构和Java集合框架,国外经典教材,开发必备

    Java集合框架常见面试题.pdf

    Java集合框架常见面试题.pdf

    Java集合框架.pdf

    Java集合框架概述 Java集合框架是一个抽象数据类型的框架,它提供了一组接口和类,可用于处理各种类型的数据结构,如列表、队列、集、映射等。 Java集合框架的主要特点是: 1、可扩展性:Java集合框架提供了一组可...

Global site tag (gtag.js) - Google Analytics