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());
}
}