您的当前位置:首页正文

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 data=new LinkedList<>();

public boolean isEmpty(){

return data.size()==0?true:false;

}

public void put(Object o){

data.add(o);

}

public Object get(){

//从队列中获取元素,获取最先放入元素,获取后从队列中删除该元素

Object obj=data.getFirst();

//获取后从队列中删除该元素

data.removeFirst();

return obj;

}

}

public class Test {

public static void main(String[] args) {

MyQueue que=new MyQueue();

que.put(\"a\");

que.put(\"b\");

que.put(\"c\");

while(!que.isEmpty()){

//获取第一个元素

Object k=que.get();

System.out.println(k);

}

}

}

5.在一个列表中存储以下元素:apple,grape,banana,pear

(1)返回集合中的最大的和最小的元素

(2)将集合进行排序,并将排序后的结果打印在控制台上

【参考答案:方法一】

import java.util.Collections;

import java.util.LinkedList;

public class Test {

public static void main(String[] args) {

LinkedList link = new LinkedList();

link.add(\"apple\");

link.add(\"grape\");

link.add(\"banana\");

link.add(\"pear\");

System.out.println(\"最大的元素为\"+Collections.max(link));

System.out.println(\"最小的元素为\"+Collections.min(link));

Collections.sort(link);

for(String s:link)

System.out.println(s);

}

}

【参考答案-方法二】

import java.util.ArrayList;

import java.util.List;

public class MyScort {

public static void main(String[] args) {

List list = new ArrayList();

list.add(\"apple\");

list.add(\"grape\");

list.add(\"banana\");

list.add(\"pear\");

for(int j = 0;jfor(int i = 0;iif(list.get(i).compareTo(list.get(i+1))>0){

String temp = list.get(i);

list.set(i, list.get(i+1));

list.set(i+1, temp);

}

}

}

System.out.print(\"排序后的顺序:\");

for(int i = 0;iSystem.out.print(list.get(i)+\" \");

}

System.out.println();

System.out.println(\"集合中最大的元素是\"+list.get(0));

System.out.println(\"集合中最小的元素是\"+list.get(3));

}

}

6.编写一个程序,创建一个 HashMap对象,用于存储银行储户的信息(其中储户的主要信息有储户的ID,姓名和余额)。另外,计算并显示其中某个储户的当前余额。

【参考答案】

import java.util.HashMap;

import java.util.Map.Entry;

public class MyMap {

public static void main(String[] args) {

BarkUser user1 = new BarkUser(101,\"祝枝山\",10000);

BarkUser user2 = new BarkUser(102,\"文征明\",20000);

BarkUser user3 = new BarkUser(103,\"祝枝山\",30000);

HashMap map = new HashMap();

map.put(1, user1);

map.put(2, user2);

map.put(3, user3);

for(Entry entry:map.entrySet()){

System.out.println(entry.getValue());

}

}

}

class BarkUser{

int id;

String name;

double count;

public BarkUser(int id, String name, double count) {

super();

this.id = id;

this.name = name;

this.count = count;

}

@Override

public String toString() {

// TODO Auto-generated method stub

return \"储户ID为\"+this.id+\姓名为\"+this.name+\"的储户账户余额为\"+this.count;

}

}

7.从控制台输入若干个单词(输入回车结束)放入集合中,将这些单词排序后(忽略大小写)打印出来。

【参考答案】

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class MyWord {

public static void main(String[] args) {

List list = new ArrayList();

Scanner in = new Scanner(System.in);

System.out.println(\"请输入需要排序的单词数量\");

int num = in.nextInt();

System.out.println(\"请一次输入单词\");

for(int i = 0;ilist.add(in.next());

}

for(int j = 0;jfor(int i = 0;iif(list.get(i).compareTo(list.get(i+1))>0){

String temp = list.get(i);

list.set(i, list.get(i+1));

list.set(i+1, temp);

}

}

}

for(int i = 0;iSystem.out.println(list.get(i));

}

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 版权所有