Java集合操作示例
数组转集合
使用 Java Util 类的 Arrays.asList(name) 方法将数组转换为集合:
package com.item.action; import java.util.*; public class Demo3 { public static void main(String[] args) { int n = 5; String[] name = new String[n]; for (int i = 0; i < n; i++) { name[i] = String.valueOf(i); } List<String> list = Arrays.asList(name); for (String li : list) { String str = li; System.out.print(str + ","); } } }
集合比较
将字符串转换为集合并使用 Collection 类的 Collection.min() 和 Collection.max() 来比较集合中的元素。
package com.item.action; import java.util.*; public class Demo3 { public static void main(String[] args) { String[] arr = { "123", "321", "234", "432", "567" }; Set<String> set = new TreeSet<String>(); for (int i = 0; i < arr.length; i++) { set.add(arr[i]); } System.out.println(Collections.min(set)); System.out.println(Collections.min(set, String.CASE_INSENSITIVE_ORDER)); System.out.println("-----------------"); System.out.println(Collections.max(set)); System.out.println(Collections.max(set, String.CASE_INSENSITIVE_ORDER)); } }
集合反转
使用 Collection 和 Listiterator 类的 listIterator() 和 collection.reverse() 方法来反转集合中的元素:
package com.item.action; import java.util.*; public class Demo3 { public static void main(String[] args) { String[] coins = { "A", "B", "C", "D", "E" }; List<String> l = new ArrayList<String>(); for (int i = 0; i < coins.length; i++) l.add(coins[i]); ListIterator<String> liter = l.listIterator(); System.out.println("反转前"); while (liter.hasNext()) { System.out.print(liter.next()+","); } System.out.println(); Collections.reverse(l); liter = l.listIterator(); System.out.println("反转后"); while (liter.hasNext()) { System.out.print(liter.next()+","); } } }
List循环移动元素
使用 Collections 类的 rotate() 来循环移动元素,方法第二个参数指定了移动的起始位置:
package com.item.action; import java.util.*; public class Demo3 { public static void main(String[] args) { List<String> list = Arrays.asList("1 2 3 4 5 6".split(" ")); System.out.println("List :" + list); //控制移动数量 Collections.rotate(list, 2); System.out.println("rotate(+2): " + list); List<String> list1 = Arrays.asList("1 2 3 4 5 6".split(" ")); System.out.println("List :" + list1); //控制移动数量 Collections.rotate(list1, -2); System.out.println("rotate(-2): " + list1); } }
List元素替换
使用 Collections 类的 replaceAll() 来替换List中所有的指定元素:
package com.item.action; import java.util.*; public class Demo3 { public static void main(String[] args) { List<String> list = Arrays.asList("1 2 3 4 5 6 1 2 3".split(" ")); System.out.println("List :" + list); //替换 Collections.replaceAll(list, "1", "100"); System.out.println("replaceAll: " + list); } }
集合练习
- 生成10个随机数,值在100到200之间;
- 将这十个数存入HashSet集合中(有可能集合的长度小于10);
- 将这个HashSet集合转换成ArrayList集合;
- 重新为ArrayList集合排序,按照从小到大的顺序;遍历该集合;
package com.item.action; import java.util.*; public class Demo3 { public static void main(String[] args) { Set<Integer> set = new HashSet<>(10); for (int i = 0; i < 10; i++) { // 将这十个数存入HashSet集合中 set.add((int) ((Math.random()) * 101 + 100)); } System.out.println(set.toString()); // HashSet集合转换成ArrayList集合 ArrayList<Integer> arrlist = new ArrayList<>(set); System.out.println(arrlist.toString()); // 按照从小到大的顺序 Collections.sort(arrlist); System.out.println(arrlist.toString()); // 遍历 for (int i = 0; i < arrlist.size(); i++) { System.out.print(arrlist.get(i) + "\t"); } } }
执行效果:
Map练习题
利用Map,完成下面的功能:
从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。
历届世界杯冠军
届数 |
举办年份 |
举办地点 |
冠军 |
第一届 |
1930年 |
乌拉圭 |
乌拉圭 |
第二届 |
1934年 |
意大利 |
意大利 |
第三届 |
1938年 |
法国 |
意大利 |
第四届 |
1950年 |
巴西 |
乌拉圭 |
第五届 |
1954年 |
瑞士 |
西德 |
第六届 |
1958年 |
瑞典 |
巴西 |
第七届 |
1962年 |
智利 |
巴西 |
第八届 |
1966年 |
英格兰 |
英格兰 |
第九届 |
1970年 |
墨西哥 |
巴西 |
第十届 |
1974年 |
前西德 |
西德 |
第十一届 |
1978年 |
阿根廷 |
阿根廷 |
第十二届 |
1982年 |
西班牙 |
意大利 |
第十三届 |
1986年 |
墨西哥 |
阿根廷 |
第十四届 |
1990年 |
意大利 |
西德 |
第十五届 |
1994年 |
美国 |
巴西 |
第十六届 |
1998年 |
法国 |
法国 |
第十七届 |
2002年 |
韩日 |
巴西 |
第十八届 |
2006年 |
德国 |
意大利 |
第十九届 |
2010年 |
南非 |
西班牙 |
第二十届 |
2014年 |
巴西 |
德国 |
package com.item.action; import java.util.*; public class Demo3 { public static void main(String[] args) { // Map实例化 Map<String, String> m = new HashMap<>(); // 添加数据 m.put("1930", "乌拉圭"); m.put("1934", "意大利"); m.put("1938", "意大利"); m.put("1950", "乌拉圭"); m.put("1954", "西德"); m.put("1958", "巴西"); m.put("1962", "巴西"); m.put("1966", "英格兰"); m.put("1970", "巴西"); m.put("1974", "西得"); m.put("1978", "阿根廷"); m.put("1982", "意大利"); m.put("1986", "阿根廷"); m.put("1990", "西得"); m.put("1994", "巴西"); m.put("1998", "法国"); m.put("2002", "巴西"); m.put("2006", "意大利"); m.put("2010", "西班牙"); m.put("2014", "德国"); System.out.println("请输入年份值:"); Scanner sc = new Scanner(System.in); String str = sc.nextLine(); // 判断key值是否等于输入的值 if (m.containsKey(str) == true) { System.out.println(m.get(str)); } else { System.out.println("今年没有举办世界杯"); } System.out.println("请输入世界杯夺冠的国家:"); String str2 = sc.nextLine(); sc.close(); if (m.containsValue(str2) == true) { System.out.println("该对获取冠军的年份值是:"); for (String temp : m.keySet()) { if (m.get(temp).equals(str2)) { System.out.println(temp); } } } else { System.out.println(str2 + "没有获得冠军!"); } } }
效果: