Java集合使用实验
创始人
2024-04-09 11:32:33
0

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;}@Overridepublic int hashCode() {return name.hashCode();}@Overridepublic 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());}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}
}

PersonTest

public class PersonTest {public static void main(String[] args) {HashSet set = new HashSet();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 treeMap = new java.util.TreeMap();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> iterator = treeMap.entrySet().iterator();while (iterator.hasNext()) {System.out.println(iterator.next().getKey());}// 使用Map集合的get()方法获取键所对应的值Set> entrySet = treeMap.entrySet();for (Entry 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 link = new LinkedList();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 list = new ArrayList();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> map = new HashMap<>();for (int i = 0; i < sb.toString().length(); i++) {ArrayList list = new ArrayList<>();char c = sb.charAt(i);if (map.containsKey(c)) {List res = map.get(c);res.add(i);map.put(c, res);} else {list.add(i);map.put(c, list);}}System.out.println(map.toString());}
}

在这里插入图片描述

相关内容

热门资讯

宇树科技被起诉,什么原因? 涉及侵权责任纠纷案件 投资时间网、标点财经快讯 天眼查法律诉讼信息显示,近日,杭州宇树科技股份有限公...
惠城环保:已制定《市值管理制度... 证券之星消息,惠城环保(300779)12月31日在投资者关系平台上答复投资者关心的问题。 投资者提...
看2026|和尔解王倩:降低调... 站在“十五五”新程待启的关键时点,如何看待2026年的经济形势?2026年经济工作怎么干?新京报贝壳...
奇瑞汽车申请满足软件升级法规要... 国家知识产权局信息显示,奇瑞汽车股份有限公司申请一项名为“一种满足软件升级法规要求的升级测试优化方法...
国台办:公安机关发布悬赏通告并... 12月31日上午,国台办在新闻发布厅举行例行新闻发布会,发言人张晗就近期两岸热点问题回答记者提问。 ...
元旦前发布这种朋友圈,他们面临... 元旦即将到来 不少人想买点烟花爆竹 增添节日氛围 朋友圈里也出现了 各种烟花爆竹的广告 但你知道吗 ...
“护航”增值税法顺利实施 配套... 新华社北京12月31日电 《经济参考报》12月31日刊发记者韦夏怡采写的文章《“护航”增值税法顺利实...
《山东省行政调解办法》5月1日... 在我们的日常生活中,难免会遇到各种纠纷,调解作为重要的纠纷解决方式,在维护群众权益方面发挥了重要作用...
上海发文推进老年人意定监护制度... 12月31日,上海市政府官网发布《上海市人民政府办公厅关于推进实施老年人意定监护制度的若干意见(试行...