2.1 定义一个方法,可以接收任意个字符串,并放入一个集合中返回
public class Test1 {
public static void main(String[] args) {
ArrayList<String> list = strsList("张无忌", "周芷若", "赵敏", "张强", "张三丰");
System.out.println(list);
}
public static ArrayList<String> strsList(String...strings){
ArrayList<String> list = new ArrayList<>();
for (String string : strings) {
list.add(string);
}
return list;
}
}
2.2 请使用HashMap集合保存街道两旁的店铺名称;使用门牌号作为键,店铺名作为值,然后使用三种方式遍历输出;
信息如下:
101,阿三面馆
102,阿四粥馆
103,阿五米馆
104,阿六快递
要求:
1:键是整数,值是字符串;
2:输出的信息使用"--"链接
public class Test2 {
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap();
map.put(101,"阿三面馆");
map.put(102,"阿四粥馆");
map.put(103,"阿五米馆");
map.put(104,"阿六快递");
System.out.println("方式1遍历 键找值");
Set<Integer> keys = map.keySet();
for (Integer key : keys) {
String value = map.get(key);
System.out.println(key + "--" + value);
}
System.out.println("---------------");
System.out.println("方式2遍历 键值对对象");
Set<Map.Entry<Integer, String>> entries = map.entrySet();
for (Map.Entry<Integer, String> entry : entries) {
System.out.println(entry.getKey() + "--" + entry.getValue());
}
System.out.println("---------------");
System.out.println("方式3遍历 接口中默认的forEach方法配合lambda");
map.forEach((key, value) -> System.out.println(key + "--" + value));
}
}
2.3 请使用TreeMap集合保存劳模信息,要求以劳模对象为键,家庭住址为值,并按照劳模的年龄从大到小排序后输出;
信息如下:
18岁的张三,北京
20岁的李四,上海
35岁的王五,天津
21岁的赵六,北京
19岁的田七,上海
要求:
1:劳模类中有姓名和年龄两个属性;
2:添加上述信息后,使用代码删除张三的信息
3:添加上述信息后,使用代码修改李四的家庭住址为郑州
4:使用至少两种方式遍历集合中的信息并输出;
public class Test3 {
public static void main(String[] args) {
Map<Worker, String> map = new TreeMap<>(((o1, o2) -> o2.getAge() - o1.getAge()));
map.put(new Worker("张三", 18), "北京");
map.put(new Worker("李四", 20), "上海");
map.put(new Worker("王五", 35), "天津");
map.put(new Worker("赵六", 21), "北京");
map.put(new Worker("田七", 19), "上海");
//删除张三的信息
Set<Worker> workers = map.keySet();
for (Worker worker : workers) {
if (worker.getName().equals("张三")) {
map.remove(worker);
}
}
//修改李四的家庭住址为郑州
map.forEach(((worker, s) -> {
if (worker.getName().equals("李四")) {
map.put(worker, "郑州");
}
}));
System.out.println("方式1遍历 键找值");
Set<Worker> keys = map.keySet();
for (Worker key : keys) {
String value = map.get(key);
System.out.println(key + "--" + value);
}
System.out.println("---------------");
System.out.println("方式2遍历 键值对对象");
Set<Map.Entry<Worker, String>> entries = map.entrySet();
for (Map.Entry<Worker, String> entry : entries) {
System.out.println(entry.getKey() + "--" + entry.getValue());
}
System.out.println("---------------");
System.out.println("方式3遍历 接口中默认的forEach方法配合lambda");
map.forEach((key, value) -> System.out.println(key + "--" + value));
}
}
class Worker{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Worker() {
}
public Worker(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return age + "岁的" + name;
}
}
2.4 现有三种产品,每种品牌对应几种商品,要求选择合适的集合来存储,并按照上述格式打印在控制台
电脑=[华为电脑, 苹果电脑, oppo电脑, vivo电脑, 三星电脑]
手机=[华为手机, 苹果手机, oppo手机, vivo手机, 三星手机]
耳机=[华为耳机, 苹果耳机, 华强北耳机, oppo耳机, vivo耳机, 三星耳机]
public class Test4 {
public static void main(String[] args) {
HashMap<String, List<String>> map = new HashMap<String, List<String>>();
List<String> list1 = new ArrayList<String>();
Collections.addAll(list1,"华为电脑", "OPPO电脑", "苹果电脑", "VIVO电脑", "三星电脑");
map.put("电脑", list1);
List<String> list2 = new ArrayList<String>();
Collections.addAll(list2,"华为手机", "OPPO手机", "苹果手机", "VIVO手机", "三星手机");
map.put("手机", list2);
map.put("耳机", List.of("华为耳机", "OPPO耳机", "苹果耳机", "VIVO耳机", "三星耳机"));
Set<Map.Entry<String, List<String>>> entries = map.entrySet();
for (Map.Entry<String, List<String>> entry : entries) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}
}
2.5 定义一个ArrayList集合,它包含两个元素,每一个元素都是HashMap类型的。
每一个HashMap集合的键是String类型的(丈夫的姓名),值都是对象类型的(妻子的对象)
给出如下的字符串数据,请用代码实现需求。
第一个HashMap集合的元素:
-
孙策 大乔(姓名:大乔 年龄:18)
-
周瑜 小乔(姓名:小乔 年龄:17)
第二个HashMap集合的元素:
-
郭靖 黄蓉(姓名:黄蓉 年龄:40)
-
杨过 小龙女(姓名:小龙女 年龄:20)
public class Test5 { public static void main(String[] args) { ArrayList<HashMap> maps = new ArrayList<>(); HashMap<String, Wife> firstMap = new HashMap<>(); firstMap.put("孙策", new Wife("大乔", 18)); firstMap.put("周瑜", new Wife("小乔", 17)); maps.add(firstMap); HashMap<String, Wife> secondMap = new HashMap<>(); secondMap.put("郭靖", new Wife("黄蓉", 40)); secondMap.put("杨过", new Wife("小龙女", 20)); maps.add(secondMap); for (HashMap map : maps) { Set<Map.Entry<String, List<String>>> entries = map.entrySet(); for (Map.Entry<String, List<String>> entry : entries) { System.out.println(entry.getKey() + entry.getValue()); } } } } class Wife{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Wife(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Wife{" + "name='" + name + '\'' + ", age=" + age + '}'; } public Wife() { } }
2.6 定义一个集合中有如下7个元素黄药师,冯蘅,郭靖,黄蓉,郭芙,郭襄,郭破虏,使用stream完成下面需求
1)将以郭字开头的元素存入新数组,并打印
2)取出前2个元素并在控制台打印输出
3)取出后2个元素并在控制台打印输出
4)统计名字三个字的人数
public class Test6 { public static void main(String[] args) { List<String> list = new ArrayList<>(); Collections.addAll(list,"黄药师", "冯蘅", "郭靖", "黄蓉", "郭芙", "郭襄", "郭破虏"); System.out.println("以‘郭’字开头的名字有:"); Object[] array = list.stream() .filter(new Predicate<String>() { @Override public boolean test(String s) { return s.startsWith("郭"); } }) .toArray(); System.out.println(Arrays.toString(array)); System.out.println("================"); System.out.println("前两个名字是:"); list.stream() .limit(2) .forEach(System.out::println); System.out.println("后两个名字是:"); System.out.println("================"); list.stream() .skip(list.size() - 2) .limit(2) .forEach(System.out::println); System.out.println("================"); long count = list.stream() .filter(e -> e.length() == 3) .count(); System.out.println("名字为三个字的人数是:" + count); } }