Java集合操作示例
目录
Java集合操作示例
数组转集合
集合比较
集合反转
List循环移动元素
List元素替换
集合练习
Map练习题
数组转集合
使用 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 + "没有获得冠军!");
}
}
}
效果: