Java集合使用实验

Posted 康小庄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java集合使用实验相关的知识,希望对你有一定的参考价值。

1. 在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。要求如下:

Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Person类的name属性进行比较,如果name相同,hashCode()方法的返回值相同,equals()方法返回true。
Person

public class Person 
	private String name;
	private int age;

	public Person(String name, int age) 
		this.name = name;
		this.age = age;
	

	public String getName() 
		return name;
	

	@Override
	public int hashCode() 
		return name.hashCode();
	

	@Override
	public boolean equals(Object obj) 
		if (!(obj instanceof Person)) 
			return false;
		
		Person person = (Person) obj;
		if (name == null) 
			return person.getName() == null ? true : false;
		
		return name.equals(person.getName());
	

	@Override
	public String toString() 
		return "Person [name=" + name + ", age=" + age + "]";
	

PersonTest

public class PersonTest 
	public static void main(String[] args) 
		HashSet<Person> set = new HashSet<Person>();
		Person p1 = new Person("张三", 22);
		Person p2 = new Person("张三", 21);
		set.add(p1);
		set.forEach(System.out::println);
		System.out.println(set.size());

		set.add(p2);
		set.forEach(System.out::println);
		System.out.println(set.size());

		System.out.println(p1.equals(p2));
	

2.选择合适的Map集合保存5位学员的学号和姓名,然后按学号的自然顺序的倒序将这些键值对一一打印出来。要求如下:

(1)创建TreeMap集合。
(2)使用put()方法将学号(“1”“2”“3”“4”“5”)和姓名(“张三”“李四”“王五”“小明”“小李”)存储到Map中,存的时候可以打乱顺序观察排序后的效果。
(3)使用map. keySet()获取键的Set集合。
(4)使用Set集合的iterator()方法获得Iterator对象用于迭代键。
(5)使用Map集合的get()方法获取键所对应的值。

public class TreeMapTest 

	public static void main(String[] args) 
		TreeMap<Integer, String> treeMap = new java.util.TreeMap<Integer, String>();
		treeMap.put(1, "张三");
		treeMap.put(2, "李四");
		treeMap.put(3, "王五");
		treeMap.put(4, "小明");
		treeMap.put(5, "小李");
		// 使用map. keySet()获取键的Set集合
		System.out.println(treeMap.keySet().toString());

		// 使用Set集合的iterator()方法获得Iterator对象用于迭代键
		Iterator<Entry<Integer, String>> iterator = treeMap.entrySet().iterator();
		while (iterator.hasNext()) 
			System.out.println(iterator.next().getKey());
		

		// 使用Map集合的get()方法获取键所对应的值
		Set<Entry<Integer, String>> entrySet = treeMap.entrySet();
		for (Entry<Integer, String> entry : entrySet) 
			System.out.println(entry.getValue());
		
	

3. LinkedList集合的方法使用:

(1)编写一个类Test,在该类中定义一个LinkedList集合;
(2)分别使用addFirst()和addLast()方法向集合中添加元素;
(3)使用peekFirst()方法获取集合中的第一个元素;
(4)使用pollFirst()方法获取并移除集合中的第一个元素;
(5)使用pollLast()方法获取并移除集合中的最后一个元素
LinkListTest

public class LinkListTest 
	public static void main(String[] args) 
		LinkedList<String> link = new LinkedList<String>();
		link.add("b");
		link.add("c");
		link.add("d");
		link.add("e");
		link.addFirst("a");
		System.out.println("向列表表头添加元素的结果为:" + link);
		link.addLast("f");
		link.addLast("g");
		System.out.println("向列表表尾添加元素的结果为:" + link);
		System.out.println("集合的第一个元素尾:" + link.getFirst());
		System.out.println("被移除的元素为:" + link.remove(6));
		link.pollLast();
		System.out.println("使用pollLast()方法后的列表:" + link);
	

4. 创建一个只能容纳String对象名为names的ArrayList集合;

按顺序往集合中添加5个字符串对象:“张三”、“李四”、“王五”、“马六”、“赵七”;
对集合进行遍历,分别打印集合中的每个元素的位置与内容;
首先打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。

public class TestArrayList 
	public static void main(String[] args) 
		ArrayList<String> list = new ArrayList<String>();
		list.add("张三");
		list.add("李四");
		list.add("王五");
		list.add("马六");
		list.add("赵七");
		for (int i = 0; i < list.size(); i++) 
			System.out.println("第" + (i + 1) + "条数据为:" + list.get(i));
		
		System.out.println("-------------------");
		System.out.println("集合大小为:" + list.size());
		list.remove(2);
		for (int i = 0; i < list.size(); i++) 
			System.out.println("第" + (i + 1) + "条数据为:" + list.get(i));
		
		System.out.println("第3条数据为:" + list.get(2));
		System.out.println("集合大小为:" + list.size());
	


5.编写这样一个程序,该程序创建了在某一字符串中出现的字符索引(即,哪个字符出现在字符串中的哪个地方)。从命令行读取该字符串。例如,运行该程序:

java Concordance Hello world
将得到结果为:
d=[9],o=[4,6],r=[7],w=[5],H=[0],l=[2,3,8],e=[1]

public class Concordance 
	public static void main(String[] args) 
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);

		String string = sc.nextLine();
		String[] split = string.split(" ");
		StringBuilder sb = new StringBuilder();

		for (String s : split) 
			sb.append(s);
		
		Map<Character, List<Integer>> map = new HashMap<>();
		for (int i = 0; i < sb.toString().length(); i++) 
			ArrayList<Integer> list = new ArrayList<>();
			char c = sb.charAt(i);
			if (map.containsKey(c)) 
				List<Integer> res = map.get(c);
				res.add(i);
				map.put(c, res);
			 else 
				list.add(i);
				map.put(c, list);
			

		
		System.out.println(map.toString());
	

以上是关于Java集合使用实验的主要内容,如果未能解决你的问题,请参考以下文章

学号:201621123032 《Java程序设计》第9周学习总结(

JAVA里的list集合,比如第一行输入 张三 18 3000 第二行 李四 19

20165104-Java第四次实验

20165236实验一 Java开发环境的熟悉

20165103 实验一 Java开发环境的熟悉

20165202 实验一 Java开发环境的熟悉