※JAVA范例 12-1 【上】Java高级开发技术 集合

 12.1 Set

  实例204 利用HashSet删除学生

import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;

public class demoHashSet {
	public static void main(String args[]) {
		HashSet stu = new HashSet(); // 创建一个String 类型的哈希表
		Scanner in = new Scanner(System.in); // 准备从键盘输入 Scanner检测装置; 扫描器
		String name;
		System.out.println("请依次输入学生姓名,空行表示结束");
		boolean goon = true;
		while (goon) { // 循环输入学生姓名
			name = in.nextLine();
			if (name.length() > 0) // 若读了空行,则name的长度为0
				stu.add(name); // 插入到哈希表中
			else
				goon = false;
		}
		System.out.println("请输入要删除的学生姓名,空行表示结束");
		goon = true;
		while (goon) {
			name = in.nextLine();
			if (name.length() > 0) {
				if (stu.remove(name))
					System.out.println("删除成功:" + name);
				else
					System.out.println("没有找到此人:" + name);
			} else
				goon = false;
		}
		System.out.println("还剩下的学生有:");
		Iterator iterator = stu.iterator(); // 将HashSet转换成Iterator对象
		while (true) {
			if (iterator.hasNext()) { // 判断是否还有下一个元素
				System.out.println(iterator.next().toString()); // 有则将下一个元素输出
			} else {
				break; // 没有则退出循环
			}
		}
		in.close(); // 关闭输入流入
	}
}


实例205 不重复的随机数序列 

package list;

import java.util.*;
public class RandomSort {
	private int minValue;  //最小值
	
	private int maxValue;  //最大值
	
	public RandomSort(){  //构造方法初始化变量
		this.minValue = 0;
		this.maxValue = 10;
	}
	
	public RandomSort(int minValue, int maxValue){ // 带参数构造方法初始化变量  
		this(); //调用上面的构造方法
		if(maxValue >= minValue){
			this.minValue = minValue;
			this.maxValue = maxValue;
		}else{
			System.out.println("最大值小于最小值,按缺省值进行赋值!");
		}	
	}
	
	public static void main(String[] args){
		RandomSort rs = new RandomSort(3,12);
		System.out.println("<1> 运用排除法生成不重复的随机数序列");
		printArray(rs.exclusionSort(6));  //exclusionSort 排除法
		System.out.println("<2> 运用筛选法生成不重复的随机数序列");  
		printArray(rs.proceduresSort(6));  //筛选法
	}

	public Integer[] exclusionSort(int len) {
		if(len <= 0){	//判断传入的数值
			return new Integer[0];
		}else if(len > (this.maxValue - this.minValue)){
			System.out.println("长度不能达到:" + len +", 长度只能是:"
					+(this.maxValue - this.minValue));
		 len = this.maxValue - this.minValue;   //重新赋值
		}
		Random random = new Random();  //用于生成随机对象
		List rlist = new ArrayList();  //创建列表对象
		while(rlist.size() < len ){
			// 将[minValue, maxValue]区间等价于min + [0, maxValue - minValue + 1)  
            // 生成随机数  
			Integer randnum = new Integer(this.minValue 
					+ random.nextInt(this.maxValue - this.minValue + 1));
			if(!rlist.contains(randnum)){		// 判断列表中是否包含对象  
				rlist.add(randnum);	// 添加整型对象  
			}
		}
		return (Integer[]) rlist.toArray(new Integer[0]);  //将列表转换成整型数组返回  
	}
	
	
	public Integer[] proceduresSort(int len) { // 运用筛选法生成不重复的随机数序列 
		if(len <= 0){
			return new Integer[0];
		}else if(len > (this.maxValue - this.minValue)){
			System.out.println("长度不能达到:" + len + ", 长度只能是:"  
                    + (this.maxValue - this.minValue));
			len = this.maxValue - this.minValue; // 重新赋值
		}
		int numLength = this.maxValue - this.minValue + 1;  //初始化列表长度
		List alist = new ArrayList();
		for(int i = this.minValue; i<= this.maxValue; i++){  // 循环依次获得整数
			alist.add(new Integer(i));    //在列表中添加整型数据
		}
		Random rd = new Random();   //用于生成随机下标
		List rlist = new ArrayList(); // 创建列表对象  
		while(rlist.size() < len){
			int index = rd.nextInt(numLength);  // 生成在[0,numLength)范围内的下标  
			rlist.add(alist.get(index)); // 下标为index数字对象放入列表对象中
			alist.remove(index); //移除下标为index的数字对象
			numLength--;  //候选队列长度减去1
		}
		return (Integer[]) rlist.toArray(new Integer[0]); // 将列表转换成整型数组返回 
	}
	public static void printArray(Integer[] data) { // 显示数组元素  
        if (data != null) { // 判断数组是否为空  
            for (int i = 0; i < data.length; i++) { // 循环显示数组数据  
                System.out.print(data[i] + "\t");  
            }  
        }  
        System.out.println(); // 换行  
	}
}


实例206 运用映射的相关类(Map) 

package list;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

public class MyMapClass {
	

	public static void main(String[] args){
		printHashMap();  // 操作HashMap显示图书种类  
		printHashtable(); // 操作Hashtable显示图书种类 
		printTreeMap();  // 操作TreeMap显示图书种类  
		printArrayList();  // 操作ArrayList显示图书种类  
	}
	

	public static void printHashMap(){ 
		Map map = new HashMap(); // hashMap是无序的  
		map.put("01", "计算机类图书");  
        map.put("02", "外语类图书");  
        map.put("03", "音乐类图书");  
        map.put("04", "人文类图书");  
        map.put("05", "医学类图书");  
        map.put("06", null);
        map.put(null, "食谱类图书");
        Iterator iterator = map.keySet().iterator(); // 获得迭代器Iterator  
        System.out.println("<1> 操作HashMap显示图书种类");
        while(iterator.hasNext()){  // 循环获得每个对象  
        	Object key = iterator.next(); // 获得每个键元素 
        	System.out.print(map.get(key) + "\t"); // 输出值  
        }
        System.out.println();  
	}
	
	private static void printHashtable() {  // 操作Hashtable的方法
		Hashtable hashTable = new Hashtable(); // Hashtable是无序的 
		hashTable.put("01", "计算机类图书");
		hashTable.put("02", "外语类图书");
		hashTable.put("03", "音乐类图书");
		hashTable.put("04", "人文类图书");  
        hashTable.put("05", "医学类图书"); 
        Iterator iterator = hashTable.keySet().iterator(); // 获得迭代器Iterator  
        System.out.println("<2>操作Hashtable显示图书种类");
        while(iterator.hasNext()){ // 循环获得每个对象 
        	Object key = iterator.next(); //获得每个键元素
        	System.out.print(hashTable.get(key) + "\t");
        }
        System.out.println();  
	}

	private static void printTreeMap() { // 操作TreeMap的方法
		TreeMap treeMap = new TreeMap(); //  TreeMap是有序的 
		treeMap.put("01", "计算机类图书");
		treeMap.put("02", "外语类图书");
		treeMap.put("03", "音乐类图书");
		treeMap.put("04", "人文类图书");  
		treeMap.put("05", "医学类图书");
		treeMap.put("06",null);
		Iterator iterator = treeMap.keySet().iterator(); 
		System.out.println("<3> 操作TreeMap显示图书种类");
		while(iterator.hasNext()){ // 循环获得每个对象
			Object key = iterator.next(); // 获得每个键元素 
			System.out.print(treeMap.get(key) + "\t"); // 输出值  
		}
		System.out.println();
	}

	private static void printArrayList() { // 操作有序的ArrayList列表集合  
		ArrayList arrayList = new ArrayList(); // 创建列表集合对象  
		arrayList.add("01 计算机类图书");  
        arrayList.add("03 音乐类图书");  
        arrayList.add("06 食谱类图书");  
        arrayList.add("04 人文类图书");  
        arrayList.add("05 医学类图书");  
        arrayList.add("02 外语类图书");
        System.out.println("<4> 排序前的图书种类");  
        for(int i = 0; i < arrayList.size(); i++){  
        	System.out.print(arrayList.get(i) + "\t");  
        }
        System.out.println();  
        Collections.sort(arrayList); //对列表集合进行排序
        System.out.println("<5> ArrayList排序后图书种类");
        for(int i =0; i < arrayList.size(); i++){   
        	System.out.print(arrayList.get(i) + "\t");  
        }
        System.out.println();  
	}
}


实例207 运用集的相关类(Set) 

package list;
import java.util.*;

public class MySetClass {
	public static void main(String[] args) {
		hashSetResult();
		treeSetResult();
		LinkedHashSetResult();
		Set hashSet = new HashSet();
		addSetElement(hashSet);
		hashSet.add("经济法基础");  // Set不允许元素重复  
		hashSet.add("初级会计实务");
		System.out.println("\n为hashSet加入经济法基础, 初级会计实务元素后->: ");
		showElement(hashSet); // 调用方法显示元素  
		hashSet.remove("财务管理");  //删除元素
		System.out.println("\nhashSet删除财务管理元素后->: ");
		showElement(hashSet);// 调用方法显示元素  
  		List list = new ArrayList();
		list.add("经济法基础");
		list.add("经济法");  
        list.add("财务管理");  
        hashSet.addAll(list); // 将列表集合添加到Set中  
        System.out.println("\nhashSet添加一个集合的所有元素后->: ");  
		showElement(hashSet);
		hashSet.retainAll(list);   // 删除除列表集合中的元素之外的元素  
		System.out.println("\nhashSet删除除了列表集合之外的元素后->: ");  
		showElement(hashSet);
	    // 获取Set中元素的个数  
		System.out.println("\thashSet中当前元素的个数: " + hashSet.size());  
		// 判断Set中的元素是否为空  
		System.out.println("\thashSet中当前元素为0?  " + hashSet.isEmpty());  
	}
	public static void hashSetResult() {// 使用HashSet操作元素 
		Set hashSet = new HashSet();  
        addSetElement(hashSet); // 调用方法初始化元素  
        System.out.println("使用HashSet存储的数据元素如下->: ");  
        showElement(hashSet); // 调用方法显示元素  
	}


	public static void treeSetResult() {// 使用TreeSet操作元素 
		Set treeSet = new TreeSet();  
		addSetElement(treeSet); // 调用方法初始化元素  
		System.out.println("\n使用treeSetResult存储的数据元素如下->: ");
		showElement(treeSet);
	}

	public static void LinkedHashSetResult() {  // // 使用LinkedHashSet操作元素  
		 Set linkedHashSet = new LinkedHashSet();  
		 addSetElement(linkedHashSet); // 调用方法初始化元素  
		 System.out.println("\n使用LinkedHashSet存储的数据元素如下->:");
		 showElement(linkedHashSet);
	}

	public static void addSetElement(Set set) { // 初始化Set的元素 
		if(set !=  null){
			set.add("经济法基础");
			set.add("初级会计实务");  
            set.add("财务管理");  
            set.add("经济法");  
            set.add("中级会计实务");  
		}
	}
	public static void showElement(Set set) {// 初始化Set的元素 
		if(set != null && set.size() > 0 ){
			Iterator it = set.iterator(); // 获得迭代器Iterator  
			while (it.hasNext()) {
				System.out.print(it.next() + " ");		
			}
		}else {
			System.out.println("没有元素!");
		}
		System.out.println();  //换行
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值