黑马程序员----java编程(2)

本文介绍了几个实用的Java编程示例,包括字符串中的数字排序、使用HashMap存储学生信息及利用TreeMap统计字符频率等。通过这些实例,读者可以更好地理解如何在实际应用中运用数据结构和算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------


===>NO.5

public class Test5 {
	/**
	 * "12 0 99 -7 30 4 100 13"要求对字符串中的数值进行排序。生成一个数值从小到大新字符串。
	 *	"-7 0 4 12 13 30 99 100"
	 *思路:
	 *1,将字符串切割。变成字符串数组。
	 *2,将字符串数组转成int数组。
	 *3,int数组排序。
	 *4,将int数组变成字符串。
	 */
	public static void main(String[] args) {
		
		String str="12 0 99 -7 30 4 100 13";
		String [] arr=str.split(" ");
		int [] numArr=toIntArray(arr);
		sort(numArr);
		String newStr=intArraytoString(numArr);
		System.out.println(newStr);
	}

	//把字符串数组转变为int数组
	private static int[] toIntArray(String [] arr){
		int [] num=new int[arr.length];
		for(int i=0;i<arr.length;i++){
			num[i]=Integer.parseInt(arr[i]);
		}
		return num;
	}
	
	//对int数组进行排序
	private static void sort(int[] numArr){
		for(int i=0;i<numArr.length-1;i++){
			for(int j=i+1;j<numArr.length;j++){
				if(numArr[i]>numArr[j]){
					int temp=numArr[i];
					numArr[i]=numArr[j];
					numArr[j]=temp;
				}
			}
		}
	}
	
	//把int数组转换为String
	private static String intArraytoString(int [] numArr){
		
		StringBuilder sb=new StringBuilder();
		for(int i=0;i<numArr.length;i++){
			if(i!=numArr.length-1)
				sb.append(numArr[i]+" ");
			else
				sb.append(numArr[i]);
		}
		return sb.toString();
	}
	
	//使用TreeSet
	/*
	 * String str = "90 -7 0 18 2 45 4";
		String[] arr = str.split(" ");
		TreeSet ts = new TreeSet();
		for(int x=0; x<arr.length; x++)
		{
			ts.add(Integer.parseInt(arr[x]));//
		}
		System.out.println(ts);
			
		StringBuilder sb=new StringBuilder();
		for(Iterator it=ts.iterator();it.hasNext();){
			
			sb.append(it.next()+" ");			
		}
		String s=sb.toString();
		System.out.println(s);
	 * 
	 */
}


===>NO.6

public class Test6 {
	/**
	 * 每一个学生都有对应的归属地。
	 *	学生Student,地址String。
	 *	学生属性:姓名,年龄。
	 *	注意:姓名和年龄相同的视为同一个学生。
	 *	保证学生的唯一性。
	 */
	public static void main(String[] args) {
		HashMap<Students,String> hm=new HashMap<Students,String>();
		hm.put(new Students("张三",30),"beijin");
		hm.put(new Students("张三",30),"tianjin");
		hm.put(new Students("李四",43),"shagnhai");
		hm.put(new Students("王五",23),"guangzhu");
		
		//第一种取出方式 keyset
		Set<Students> keyset=hm.keySet();
		Iterator<Students> it=keyset.iterator();
		while(it.hasNext()){
			Students stu=it.next();
			String value=hm.get(stu);
			System.out.println(stu+":"+value);
		}
		
		//第二种取出方式 entryset
		Set<Map.Entry<Students, String>> entryset=hm.entrySet();
		Iterator<Map.Entry<Students, String>> iter=entryset.iterator();
		while(iter.hasNext()){
			Map.Entry<Students, String> me=iter.next();
			Students st=me.getKey();
			String val=me.getValue();
			System.out.println(st+":"+val);
		}
	}
}

class Students implements Comparable<Students>{

	private String name;
	private int age;
	
	public Students(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}

	public int hashCode() {
		return name.hashCode()+age*38;
	}

	public boolean equals(Object obj) {
		if(!(obj instanceof Students))
			throw new ClassCastException("类型不匹配");
		Students stu=(Students)obj;
		return this.name.equals(stu.name) && this.age==stu.age;
	}

	public String toString() {
		return name+":"+age;
	}

	public int compareTo(Students s) {
		int num=new Integer(this.age).compareTo(new Integer(s.age));
		if(num==0)
			return this.name.compareTo(s.name);
		return num;
	}
}


===>NO.7

public class Test7 {
	/*
	 * 练习:"sdfgzxcvasdfxcvdf"获取该字符串中的字母出现的次数。
	 * 希望打印结果:a(1)c(2).....
	 */

	public static void main(String[] args) {	
		String s=charcount("sdfgzxcvasdfxcvdf");
		System.out.println(s);	
	}
	
	private static String charcount(String str) {
		char [] ch=str.toCharArray();
		TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();
		int count=0;
		for(int i=0;i<ch.length-1;i++){
			if(!(ch[i]>'a'&&ch[i]<'z' || ch[i]>'A'&&ch[i]<'Z'))
				continue;
	
			Integer value=tm.get(ch[i]);
			if(value!=null)
				count=value;
			count++;
			tm.put(ch[i], count);
			count=0;
		}
		
		StringBuilder sb=new StringBuilder();
		Set<Map.Entry<Character, Integer>> entryset=  tm.entrySet();
		Iterator<Map.Entry<Character,Integer>> it= entryset.iterator();
		while(it.hasNext()){
			Map.Entry<Character, Integer> me=it.next();
			Character key=me.getKey();
			Integer value=me.getValue();
			sb.append(key+"("+value+")"+" ");
		}
		return sb.toString();
	}
}



---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值