Java集合-练习巩固

练习一

image

public class H1_Test {
	public static void main(String[] args) {
		H1_News h1News = new H1_News("新冠确诊病例超千万,数百万印度教信徒赴恒河\"圣浴\"引民众担忧");
		//英文字符的双引号需要用到转义字符,否则报错;而中文的不需要
		H1_News h1News1 = new H1_News("男子突然想起2个月前钓的鱼还在网兜里,捞起一看赶紧放生");

		ArrayList arrayList = new ArrayList();
		arrayList.add(h1News);
		arrayList.add(h1News1);

		for (int i = arrayList.size()-1; i >= 0 ; i--) {
			//这里需要size-1,否则抛出异常:IndexOutOfBoundsException,原因很明显
			H1_News h1News2 = (H1_News) arrayList.get(i);
			String s = h1News2.getTopic();
			if (s.length()>15){
				System.out.println(s.substring(0,15)+"...");
				//使用到获取字符串字串的方法 substring ,注意点是:参数截取的是前闭后开
			}else
				System.out.println(arrayList.get(i));
			//这里的处理标题的程序可以封装到一个方法里面 processTopic
		}
	}
}

练习二

image


练习三

image

public class H3_test {
	public static void main(String[] args) {
		Map hashMap = new HashMap();

		hashMap.put("jack",650);
		hashMap.put("tom",1200);
		hashMap.put("smith",2900);

		hashMap.put("jack",2600); //更新即替换

		//HashMap的遍历方式:获取集合(keySet,entrySet,values),
		//	然后遍历(迭代器,增强for循环)
		// map 的get 方法:根据键,获取值
		Set set = hashMap.keySet();
		for (Object o : set) {
			hashMap.put(o,(Integer)hashMap.get(o)+100);
			System.out.println(o);
		}//加薪100

		System.out.println(hashMap);

		Set set1 = hashMap.entrySet();
		Iterator iterator = set1.iterator();
		while (iterator.hasNext()) {
			Map.Entry next =  (Map.Entry) iterator.next();
			System.out.println(next.getValue());
		}
	}
}

练习四、五

image

抛出 ClassCastException

重点:理解 TreeSet
https://www.cnblogs.com/ffforward/p/15425433.html


练习六( ! )

image

注意点:
(1)HashSet不允许元素重复;

(2)hashCode和equals方法已被重写

理解:
(1)hashSet.remove(p1) 失败:
将 p1.name 改为 "CC" 后,p1的 hashCode 改变了,再次通过 p1 的hash值计算索引的时候,计算到的索引和 add 时候的索引已不一致。

(2)hashSet.add(new H6_Person(1001, "CC")) 该参数和 p1 应该被判断被equals ,为何能 add:
由 id 和 name 计算出来的 hashCode 和修改前的 p1 并不一致,所以加入的是不同索引处的位置。


练习七

image

posted @ 2021-10-24 14:33  Wiiiimp  阅读(35)  评论(0编辑  收藏  举报