两个关于容器的程序

本文展示了如何在Java中遍历容器(List、Set、Map)并提供了字符串元素分类计数的实现方法。

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

贴两个学容器时的程序,复习起来方便。

1.测试List、Set、Map集合的遍历操作

/**
 * 测试List、Set、Map集合的遍历操作
 * 在以后遍历容器时,List尽量采用索引遍历,Set尽量采用迭代器
 * 
 */


package com.bjsxt.test.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class TestIterate {
	
	public static void testList(){
		List<Student>  list = new ArrayList<Student>();
		list.add(new Student("张三"));
		list.add(new Student("李四"));
		list.add(new Student("王五"));
		list.add(new Student("赵六"));
		
		//使用索引遍历
		for(int i=0;i<list.size();i++){
			Student stu1 = list.get(i);
			System.out.println(stu1.getName());
		}
		
		
		//使用增强for循环
		for(Student stu:list){
			System.out.println(stu.getName());
		}
		
		//使用迭代器,这种方式既可以迭代List,也能迭代Set
		Iterator<Student> iter = list.iterator();
		while(iter.hasNext()){
			Student stu2 = iter.next();//返回当前元素,并且让游标指向下一个
			System.out.println(stu2.getName());
		}
		
		//或者也可用下面的方法
		for(Iterator<Student> iter2 = list.iterator();iter2.hasNext();){
			Student stu = iter2.next();
			System.out.println(stu.getName());
		}
	}
	
	
	public static void testSet(){
		Set<Student> set = new HashSet<Student>();
		set.add(new Student("张三"));
		set.add(new Student("李四"));
		set.add(new Student("王五"));
		set.add(new Student("赵六"));
		
		//使用增强型for循环
		for(Student stu:set){
			System.out.println(stu.getName());
		}
		
		//使用迭代器(既可以迭代List,也能迭代Set)
		Iterator<Student> iter = set.iterator();
		while(iter.hasNext()){
			Student stu = iter.next();
			System.out.println(stu.getName());
		}
		
		for(Iterator<Student> iter2 = set.iterator();iter2.hasNext();){
			Student stu = iter2.next();
			System.out.println(stu.getName());
		}
	}
	
	public static void testMap(){
		Map<String,Student>  map = new HashMap<String,Student>();
		map.put("a", new Student("张三"));
		map.put("b", new Student("李四"));
		map.put("c", new Student("王五"));
		
		//遍历key
		Set<String> set1 = map.keySet();//为什么要这样用
		Iterator<String> iter1 = set1.iterator();
		while(iter1.hasNext()){
			String key = iter1.next();
			System.out.println(key + "-----" + map.get(key).getName());
		}
		
		//遍历value
		Collection<Student> set2 = map.values();
		Iterator<Student> iter2 = set2.iterator();
		while(iter2.hasNext()){
			Student v = iter2.next();
			System.out.println(v.getName());
		}
		
		//遍历Entry(键值对)
		Set<Entry<String,Student>> set3 = map.entrySet();
		Iterator<Entry<String,Student>> iter3 = set3.iterator();
		while(iter3.hasNext()){
			Entry<String,Student> e = iter3.next();
			System.out.println(e.getKey() + "-----" + e.getValue());
		}
	}
	
	
	public static void main(String[] args) {
		testList();
		testSet();
		testMap();
		
	}
}

2.利用Map对一个字符串中的元素进行分类计数

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.StringTokenizer;

public class TestHashMap {
	public static void main(String[] args) {
		String str = "what a woderful day a what what";
		Map<String,Integer> map = new HashMap<String,Integer>();//构造容器
		StringTokenizer s = new StringTokenizer(str);
		while(s.hasMoreElements()){
			String strTemp = (String) s.nextElement();//将Object类型强制转换为String型
			//存储
			if(!map.containsKey(strTemp)){//空袋子
				map.put(strTemp, 1);//创建容器并放入值
			}else{
				map.put(strTemp, map.get(strTemp)+1);
			}
		}
		
		//方法1
		//遍历map中的key,迭代器 +Keyset/get<推荐>
		Set<String> key = map.keySet();
		Iterator<String> iter1 = key.iterator();
		while(iter1.hasNext()){
			String str1 = iter1.next();
			System.out.println(str1 + "--->" + map.get(str1));
		}
		//用加强型for + Keyset/get 
		for(String keys:key){
			System.out.println(key + "--->" +map.get(keys));
		}
		
		//方法2
		//使用entrySet + foreach + 迭代器
		Set<Map.Entry<String,Integer>> entry = map.entrySet();
		Iterator<Map.Entry<String,Integer>> iter2 = entry.iterator();
		while(iter2.hasNext()){
			Map.Entry<String, Integer> en = iter2.next();
			String key2 = en.getKey();
			Integer it1 = en.getValue();
			System.out.println(key2 + "--->" + map.get(key2));
		}
		
		//foreach
		for(Entry<String,Integer> entry2:entry){
			String key3 = entry2.getKey();
			Integer it2 = entry2.getValue();
			System.out.println(key3 + "--->" + map.get(key3));
		}
		
		
		
		
		
		/*这是打印字符串中的元素
		 * 
		 * while(s.hasMoreTokens()){
		System.out.println(s.nextToken());
		}
		*/
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值