java集合类习题_Java集合练习
JavaCollectionExercise
Java集合練習
創建一個HashMap對象,并在其中添加一些學員的姓名和他們的分數:張三,90分,李四,88分。然后從HashMap對象獲取這兩個人的成績并顯示出來,接著把張三的成績改為99分,再把他們的成績顯示出來。
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
public class First {
public static void main(String[] args) {
HashMap hp =new HashMap();
hp.put("張三", "90分");
hp.put("李四", "88分");
Collection con = hp.values();
Iterator it1 = con.iterator();
while(it1.hasNext()) {
System.out.println(it1.next());
}
hp.replace("張三", "99分");
Collection con1 = hp.values();
Iterator it2 = con.iterator();
while(it2.hasNext()) {
System.out.println(it2.next());
}
}
}
2.定義一個ArrayList集合類,然后放入多個字符串,排序,反序(Collections 集合工具類中包含了排序等功能)
用Iterator遍歷集合
import java.util.*;
public class Second {
public static void main(String[] args) {
System.out.println("請隨意輸入一堆字符串:(輸入0則結束)");
Scanner sc = new Scanner(System.in);
ArrayList list = new ArrayList();
for(;;) {
String s = sc.next();
if(s.equals("0")) {
break;
}
list.add(s);
}
Collections.sort(list);
Iterator iterator = list.iterator();
System.out.println("排序后");
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
iterator = list.iterator();
System.out.println("反序后");
Collections.reverse(list);
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
sc.close();
}
}
3.定義一個Map集合,key是Integer類型,value是Cat類型,
然后使用values()方法遍歷每個元素,調用每個元素的叫的方法
(定義Cat類,起碼包含一個Cry()方法,建議結合泛型操作)
Cat類
public class Cat {
public void Cry() {
System.out.println("貓喵喵~~");
}
}
測試方法
import java.util.*;
public class Third {
public static void main(String[] args) {
Map map = new HashMap();
map.put(new Integer(1), new Cat());
map.put(new Integer(2), new Cat());
map.put(new Integer(3), new Cat());
map.put(new Integer(4), new Cat());
map.put(new Integer(5), new Cat());
Collection coll = map.values();
Iterator iterator = coll.iterator();
while (iterator.hasNext()) {
Cat cat = (Cat) iterator.next();
cat.Cry();
}
}
}
4.定義一個HashSet集合,只能添加Student類型的對象。
往集合內添加多個元素,分別使用foreach語句,Iterator方式循環
Student類
public class Student {
String name;
int age;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
測試類
import java.util.HashSet;
import java.util.Iterator;
public class Fourth {
public static void main(String[] args) {
HashSet hs = new HashSet();
hs.add(new Student("張三",20));
hs.add(new Student("李四",19));
hs.add(new Student("王五",16));
hs.add(new Student("張大",18));
hs.add(new Student("李二",20));
Iterator iterator = hs.iterator();
System.out.println("Iterator輸出");
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("*************************************");
System.out.println("for-each輸出");
for(Student s : hs) {
System.out.println(s);
}
}
}
5.**隨機生成不重復的26個小寫字母,生成26個后就停止生成。
import java.util.*;
public class Fifth {
/**
* @Description:
* @author LYL
* @date 2021-01-10 12:48:38
*/
public static void main(String[] args) {
HashSet hs = new HashSet();
Random r = new Random();
for(;;) {
int i = (r.nextInt(122-97+1)+97);
char ch = (char)i;
if(hs.size()>=26) {
break;
}
hs.add(ch);
}
Iterator iterator = hs.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
6.**隨機生成100個小寫字母,同時統計每個字母生成了多少個
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
public class Sixth {
public static void main(String[] args) {
ArrayList list = new ArrayList();
for(int i=0;i<100;i++) {
int x = 97+(int)(Math.random()*26);
list.add((char)x);
}
HashMap map = new HashMap();
for(int i=0;i
if(map.containsKey(list.get(i))) {
int times = (int)(map.get(list.get(i)))+1;
map.put(list.get(i), times);
}else {
map.put(list.get(i),1);
}
}
Iterator it = map.entrySet().iterator();
while(it.hasNext()){
Entry e = (Entry) it.next();
System.out.println("字母:"+e.getKey()+"次數:"+e.getValue());
}
}
}
編寫一個程序,使用ArrayList存儲客戶的郵件地址。地址中應該包含姓名、街道、市(縣)、省(自治區)、國家(地區)和代碼,然后顯示ArrayList中的內容,此程序的輸出結果應該如下:(需重寫地址類的toString方法)將第題中的ArrayList實現排序。
a)提示:排序必須先實現該類對象能比較大小。
b)地址先按比較國家,相同則比較城市,再相同則比較街道,再相同則比較姓名
EmailAddress類
public class EmailAddress implements Comparable {
String name;
String street;
String city;
String state;
String country;
String pinCode;
public EmailAddress(String name, String street, String city, String state, String country, String pinCode) {
super();
this.name = name;
this.street = street;
this.city = city;
this.state = state;
this.country = country;
this.pinCode = pinCode;
}
@Override
public String toString() {
return "EmailAddress [\n name:" + name + "\n street:" + street + "\n city:" + city + " state:" + state
+ "\n country:" + country + "\n pinCode:" + pinCode + "\n]";
}
@Override
public int compareTo(Object o) {
//如果傳入的類型是EmailAddress類型則進入比較,否則拋出數據不匹配的異常
if (o instanceof EmailAddress) {
//將傳入的Object類型轉換為EmailAddress類型
EmailAddress ea = (EmailAddress) o;
//如果國家相同則比較城市,否則直接返回對應數值
if (country.compareTo(ea.country) == 0) {
//如果城市相同則比較街道,否則直接返回對應數值
if (city.compareTo(ea.city) == 0) {
//如果街道相同則比較名字,否則直接返回對應數值
if (street.compareTo(ea.street) == 0) {
//如果名字也相同則返回0,否則直接返回對應數值
if (name.compareTo(ea.name) != 0) {
return 0;
} else {
return name.compareTo(ea.name);
}
} else {
return street.compareTo(ea.street);
}
} else {
return city.compareTo(ea.city);
}
} else {
return country.compareTo(ea.country);
}
}
throw new RuntimeException("傳入數據類型不匹配");
}
}
測試類
import java.util.ArrayList;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
ArrayList al1 = new ArrayList();
EmailAddress ea1 = new EmailAddress ("張三","韶山南路","長沙市","湖南省","c","1001");
EmailAddress ea2 = new EmailAddress ("李四","韶山西路","長沙市","湖南省","b","1002");
EmailAddress ea3 = new EmailAddress ("王五","韶山東路","長沙市","湖南省","a","1003");
al1.add(ea1);
al1.add(ea2);
al1.add(ea3);
//for(int i=0;i
//System.out.println(al1.get(i));
//}
Object[] arr = al1.toArray();
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
總結
以上是生活随笔為你收集整理的java集合类习题_Java集合练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jrtplib介绍
- 下一篇: PageRank算法在社交网络上的应用