Java基础第6章编程题答案
2022-03-01
来源:步旅网
第六章集合编程题
1.遍历一个LinkedList集合,写一个可以删除所有与“tom”相同的元素的静态方法。(集合中的元素自行添加)
注意:不要使用for循环遍历删除,会出现删除不干净的情况
【参考答案】
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
public class Test {
public static void main(String[] args) {
LinkedList list=new LinkedList();list.add(\"tom\");
list.add(\"jack\");
list.add(\"jone\");
list.add(\"tom\");
System.out.println(list);
removes(list,\"tom\");
System.out.println(list);
}
public static void removes(LinkedList list, String s) {Iterator iterator = list.iterator();
while (iterator.hasNext()) {
String str = (String) iterator.next();
if (str.equals(s)) {
iterator.remove();
}
}
}
}
2.如何判断两个集合是否有交集,并打印出他们的交集
提示:判断这两个集合是否包含相同的对象或元素,可以使用retainAll方法:oldCourses.retainAll(newCoures)。如果存在相同元素,oldCourses中仅保留相同的元素。如果不存在相同元素,oldCourse会变为空。
【参考答案】
import java.util.*;
public class Test{
public static void main(String[] args) {
HashSet hs=new HashSet();hs.add(\"George\");
hs.add(\"Jim\");
hs.add(\"Blake\");
hs.add(\"Kevin\");
hs.add(\"Mecheal\");
hs.add(\"John\");
HashSet hs2=new HashSet();hs2.add(\"George\");
hs2.add(\"Kate\");
hs2.add(\"Kevin\");
hs2.add(\"Mecheal\");
hs2.add(\"Ryan\");
hs.retainAll(hs2);//retainAll()的方法返回时boolean,但不能作为又没有交集的判断,判断有没有交集要通过hs的size()。
if (hs.size()==0){
System.out.println(\"没有交集\");
}else{
System.out.println(\"有交集\");
}
for (String s : hs) {
System.out.println(s);
}
}
}
3.各种集合的遍历方法
【参考答案】
①List
import java.util.*;
public class Test{
public static void main(String[] args) {
List list=new ArrayList<>();list.add(\"George\");
list.add(\"Jim\");
list.add(\"Blake\");
list.add(\"Kevin\");
list.add(\"Mecheal\");
list.add(\"John\");
//for循环
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
System.out.println(s);
}
//foreach
for (String s : list) {
System.out.println(s);
}
//迭代器遍历
Iterator iterator = list.iterator();while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
②HashSet
import java.util.*;
public class Test{
public static void main(String[] args) {
Set list=new HashSet<>();list.add(\"George\");
list.add(\"Jim\");
list.add(\"Blake\");
list.add(\"Kevin\");
list.add(\"Mecheal\");
list.add(\"John\");
//foreach
for (String s : list) {
System.out.println(s);
}
//迭代器遍历
Iterator iterator = list.iterator();while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
③Map
import java.util.*;
public class Test{
public static void main(String[] args) {
Map map = new HashMap<>();map.put(\"name\", \"Tom\");
map.put(\"age\", \"20\");
map.put(\"address\", \"beijing\");
for (String key : map.keySet()) {
String value = map.get(key);
System.out.println(key+\"===\"+value);
}
Iterator> iterator = map.entrySet().iterator();while (iterator.hasNext()) {
Map.Entry entry = iterator.next();String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+\"===\"+value);
}
for (Map.Entry entry: map.entrySet()) {String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+\"===\"+value);
}
for (String value:map.values()) {
System.out.println(value);
}
}
}
4.请使用LinkedList来模拟一个队列(先进先出的特性):
(1)拥有放入对象的方法void put(Object o)
(2)取出对象的方法Object get()
(3)判断队列当中是否为空的方法boolean isEmpty();并且,编写测试代码,验证你的队列是否正确。
【参考答案】
import java.util.*;
class MyQueue{
//存储队列中数据
LinkedList