第六章集合编程题
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<String> list=new LinkedList<String>();
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<String> list, String s) {
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
String str = (String) iterator.next();
if (str.equals(s)) {
iterator.remove();
}
}
}
}
2.如何判断两个集合是否有交集,并打印出他们的交集
提示:判断这两个集合是否包含相同的对象或元素,可以使用retainAll方法:ainAll(newCoures)。如果存在相同元素,oldCourses中仅保留相同的元素。如果不存在相同元素,oldCourse会变为空。
【参考答案】
import java.util.*;
public class Test{
public static void main(String[] args) {
HashSet<String> hs=new HashSet<String>();
hs.add("George");
hs.add("Jim");
hs.add("Blake");
hs.add("Kevin");
hs.add("Mecheal");
hs.add("John");
HashSet<String> hs2=new HashSet<String>();
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<String> list=new ArrayList<>();
list.add(java arraylist用法"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<String> 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<String> 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<String> 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<String, String> 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<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> entry = iterator.next();
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"==="+value);
}
for (Map.Entry<String,String> 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<Object> data=new LinkedList<>();
public boolean isEmpty(){
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论