JAVA集合 练习题
java集合编程练习题及答案

java集合编程练习题及答案题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....public class exp2{public static void main{int i=0;forSystem.out.println);}public static int f{ifreturn 1;elsereturn f+f;}}或public class exp2{public static void main{int i=0;math mymath = new math;forSystem.out.println);}}class math{public int f{ifreturn 1;elsereturn f+f;}}题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt,如果能被整除,则表明此数不是素数,反之是素数。
public class exp2{public static void main{int i=0;math mymath = new math;forif==true)System.out.println;}}class math{public int f{ifreturn 1;elsereturn f+f;}public boolean iszhishu{for}if return false; return true; }题目:打印出所有的“水仙花数“,所谓“水仙花数“是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个“水仙花数“,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
Java集合练习及面试题

章节练习题及面试题Collection 和Collections的区别答:Collection是集合类的上级接口,继承于他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别答:Set里的元素是不能重复的,用equals()方法判读两个Set是否相等equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值List, Set, Map是否继承自Collection接口答:List,Set是,Map不是两个对象值相同(x.equals(y) == true),但却可有不同的hash cod e,这句话对不对答:不对,有相同的hash code说出ArrayList,Vector, LinkedList的存储性能和特性答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
HashMap和Hashtable的区别答:1.HashMap与Hashtable都实现了Map接口。
由于HashMap的非线程安全性,效率上可能高于Hashtable。
Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
java集合试题及答案

java集合试题及答案# Java集合试题及答案1. 选择题- 集合框架中,哪个接口提供了对集合的最小功能定义?- A. List- B. Set- C. Map- D. Collection- 答案:D2. 填空题- 在Java集合框架中,ArrayList是基于______实现的。
- 答案:数组3. 简答题- 描述ArrayList和LinkedList在性能上的主要差异。
- 答案:ArrayList是基于动态数组实现的,因此对于随机访问操作有较好的性能。
LinkedList是基于双向链表实现的,因此对于插入和删除操作有更好的性能。
4. 编程题- 编写一个Java程序,实现一个方法,该方法接受一个ArrayList<Integer>作为参数,并返回一个新的ArrayList<Integer>,其中包含原列表中所有元素的平方。
```javapublic class SquareList {public static ArrayList<Integer>squareList(ArrayList<Integer> input) {ArrayList<Integer> result = new ArrayList<>(); for (int num : input) {result.add(num * num);}return result;}}```5. 判断题- 在Java中,HashMap的键值对是有序的。
- 正确- 错误- 答案:错误6. 多选题- 下列哪些类实现了Map接口?- A. HashMap- B. TreeMap- C. HashSet- D. LinkedHashMap- 答案:A, B, D7. 计算题- 假设有一个ArrayList<String>,包含10个元素,如果使用Collections.sort()方法对其进行排序,排序后第一个元素的索引是多少?- 答案:08. 案例分析题- 给定一个HashSet<String>,包含"apple", "banana", "cherry", "date", "elderberry"五个元素。
java集合框架(习题与答案)

java 集合框架(习题)集合框架Key Point* Collection接口、Set 接口、List 接口基本操作* List 接口及其实现类* Set 接口及其实现类* 迭代遍历* Hash 算法与hashCode方法* Comparable接口* Map 接口及其实现类* 遍历Map* 泛型练习1. 填空Collection接口的特点是元素是对象;List 接口的特点是元素有(有|无)顺序,可以(可以|不可以)重复;Set 接口的特点是元素无(有|无)顺序,不可以(可以|不可以)重复;Map 接口的特点是元素是键值对,其中值可以重复,键不可以重复。
2. (List)有如下代码import java.util.*;public classTestLi st{public static void main(String args[]){List list = new ArrayL ist();list.add(“Hello”);list.add(“World”);list.add(1, “Learn”);list.add(1,“Java”);printL ist(list);}public static void printL ist(List list){for(Object obj:list){String str=(String)obj;System.out.printl n(obj);}}}要求:1) 把//1 处的代码补充完整,要求输出li s t 中所有元素的内容2) 写出程序执行的结果Helloj ava LearnW orld3) 如果要把实现类由ArrayLis t换为Link edLis t,应该改哪里?A rrayLi st 和Linked List使用上有什么区别?实现上有什么区别?把实例化的语句改为ne w LinkedLi st();ArrayLi st 数组实现查询快增删慢Linked List链表实现查询慢增删快4) 如果要把实现类由ArrayLis t换为V ect or,应该改哪里?A rrayLi st 和V ecto r 使用上有什么区别?实现上有什么区别?ArrayLi st是线程不同步的,轻量级的,线程不安全,速度快V ector是线程同步的,多线程访问比较安全,速度慢3. (List)写出下面程序的运行结果import java.util.*;public classTestLi st{public static void main(String args[]){List list = new ArrayL ist();list.add(“Hello”);list.add(“World”);list.add(“Hello”);list.add(“Learn”);list.remove(“Hello”);list.remove(0);for(int i = 0; i<list.size(); i++){System.out.printl n(list.get(i));}}}HelloLearn4. (Set,List)import java.util.*;public classTestLi stSet{public static void main(String args[]){List list = new ArrayL ist();list.add(“Hello”);list.add(“Learn”);list.add(“Hello”);list.add(“Welcom e”);Set set = new HashSe t();set.addAll(list);System.out.printl n(set.size());}}选择正确答案A.编译不通过B.编译通过,运行时异常C.编译运行都正常,//输出Hash Set中不能放重复值D.编译运行都正常,输出45. (List)已知有一个W o rker类如下:public classWorker {privat e int age;privat e String name;privat e double salary;public Worker (){}public Worker (String name, int age, double salary){ = name;this.age = age;this.salary = salary;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getNam e() {return name;}public void setNam e(String name) { = name;}public double getSal ary(){return salary;}public void setSal ary(double salary){this.salary = salary;}public void work(){System.out.printl n(name+“work”);}}完成下面的要求1) 创建一个Li s t,在List中增加三个工人,基本信息如下:姓名年龄工资zhang3 18 3000li4 25 3500wang522 32002) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资33003) 删除wang5 的信息4) 利用for循环遍历,打印List中所有工人的信息5) 利用迭代遍历,对List中所有的工人调用work 方法。
JAVA集合试题库完整

集合一、第一模块:知识点讲解图解集合Set HashMap TreeMapLinkedHashMap ArrayList LinkList HashSet TreeSet LinkedHashSet Comparable comparator1、集合的由来:我们学的语言是面向对象的语言,为了方便对多个对象进行操作,我们就必须把对象存储。
而要存储多个对象,就不能是一个基本变量,而应该是一个容器类型的变量。
这样就引入了集合。
*以前接触过得容器:数组、StringBuffer 等由于StringBuffer 的结果是一串字符,不一定能满足我们的要求,所以我们只能选择数组,这就是对象数组。
而对象数组不能适应变化的需求,因为数组的长度是固定。
2、数组和集合的区别①长度区别集合的长度可变数组长度不可变②内容区别集合可以存储不同类型的元素数组存储的是同一种类型的元素③元素的数据类型问题数组可以存储基本数据类型也可以存储引用数据类型集合只能存储引用类型,Java提供了不同的集合类,这多个集合的数据结构不同*数据结构:数据的存储方式Java提供的多种集合类,他们的数据结构不同,但是,他们肯定有共性的内容(存储、获取、判断等)。
通过不断的向上提取,我们就能够得到一个集合的继承体系结构图。
把上面这段话转化为图形的形式:collectionArrayList Vector LinkedList HashSetTreeSet通过这个图可以清楚的理解集合现在我们从最低层开始学习一、Collection(接口Java.util )1、功能:①:添加boolean add(Object obj) 添加一个元素boolean addAll(Collection c)添加一个集合的元素②:删除void clear() 移除所有元素boolean remove(Object obj) 移除一个元素boolean removeAll(Collection c)移除一个集合的元素③:判断boolean cotains(Object o)判断集合中是否包含指定元素boolean containsAll(Collection c)判断集合中是否包含指定集合Collection c1=new ArrayList();c1.add("hello");c1.add("java");ArrayList();"containsAll:"System.out.println(c1);System.out.println(c2);打印结果:containsAll:falsec1[hello, java, world]c2[a, c, world]boolean isEmpty() 判断是否是空④获取Iterator<E> iterator()⑤长度int size()⑥交集功能(了解)boolean retainAll(Collection c)交集两个集合中都有的元素,返回值的意思?假设有两个集合A,B。
java集合练习题(打印版)

java集合练习题(打印版)# Java集合练习题## 一、选择题1. 下列哪个不是Java集合框架中的一部分?A. ArrayListB. LinkedListC. HashMapD. MyCollection2. 在Java中,哪个接口提供了对集合元素的迭代访问?A. CollectionB. IteratorC. ListD. Set3. Java集合框架中的哪个类是线程安全的?A. ArrayListB. LinkedListC. HashMapD. Vector4. 以下哪个方法用于判断一个集合是否包含特定的元素?A. add()B. contains()C. remove()D. size()5. 以下哪个方法用于获取集合中的元素个数?A. add()B. contains()C. remove()D. size()## 二、简答题1. 解释ArrayList和LinkedList的主要区别。
2. 描述HashMap的工作原理。
3. 为什么在Java中使用迭代器遍历集合是安全的?## 三、编程题1. 题目:创建一个ArrayList,添加5个整数元素,并打印出这些元素。
```javaArrayList<Integer> list = new ArrayList<>();// TODO: 添加元素并打印```2. 题目:使用LinkedList实现一个简单的队列,添加3个元素,并按顺序打印出来。
```javaLinkedList<Integer> queue = new LinkedList<>();// TODO: 添加元素并打印```3. 题目:创建一个HashMap,存储学生的名字和分数,然后遍历HashMap并打印每个学生的名字和分数。
```javaHashMap<String, Integer> studentScores = new HashMap<>();// TODO: 添加学生分数并打印```4. 题目:实现一个程序,使用HashSet存储一组整数,然后检查并打印一个给定整数是否在HashSet中。
java集合习题答案

java集合习题答案Java集合习题答案Java是一种广泛应用于软件开发的编程语言,而集合是Java中常用的数据结构。
在学习Java集合的过程中,习题是一个很好的锻炼方式。
本文将为大家提供一些常见的Java集合习题的答案,希望能够帮助大家更好地理解和掌握Java集合。
1. 题目:使用ArrayList存储一组学生的姓名,并按照字母顺序进行排序。
答案:```javaimport java.util.ArrayList;import java.util.Collections;public class Main {public static void main(String[] args) {ArrayList<String> students = new ArrayList<>();students.add("Tom");students.add("Alice");students.add("Bob");students.add("Charlie");Collections.sort(students);for (String student : students) {System.out.println(student);}}}```2. 题目:使用HashSet存储一组整数,并找出其中的最大值和最小值。
答案:```javaimport java.util.HashSet;public class Main {public static void main(String[] args) {HashSet<Integer> numbers = new HashSet<>();numbers.add(10);numbers.add(5);numbers.add(8);numbers.add(3);int min = Integer.MAX_VALUE;int max = Integer.MIN_VALUE;for (int number : numbers) {if (number < min) {min = number;}if (number > max) {max = number;}}System.out.println("最小值:" + min);System.out.println("最大值:" + max);}}```3. 题目:使用HashMap存储一组学生的姓名和对应的年龄,并按照年龄从小到大进行排序。
java 集合练习题

java 集合练习题在Java编程中,集合(Collection)是非常重要的数据结构,用于存储一组对象。
它们提供了许多有用的方法和功能,可以帮助我们有效地操作和管理数据。
本文将介绍一些Java集合的练习题,旨在帮助读者加深对集合的理解和应用。
练习题一:集合的创建和初始化请编写Java代码,实现以下功能:1. 创建一个ArrayList集合,用于存储整型数据。
2. 初始化这个ArrayList,使其包含以下元素:[1, 3, 5, 7, 9]。
3. 遍历ArrayList,将每个元素打印到控制台。
解答:```javaimport java.util.ArrayList;public class ArrayListExercise {public static void main(String[] args) {ArrayList<Integer> numbers = new ArrayList<>();numbers.add(1);numbers.add(3);numbers.add(5);numbers.add(7);numbers.add(9);for (int number : numbers) {System.out.println(number);}}}```练习题二:集合的添加和删除元素请编写Java代码,实现以下功能:1. 创建一个HashSet集合,用于存储字符串数据。
2. 初始化这个HashSet,使其包含以下元素:["apple", "banana", "orange"]。
3. 向HashSet中添加新元素:"grape"。
4. 从HashSet中删除元素:"banana"。
5. 遍历HashSet,将每个元素打印到控制台。
解答:```javaimport java.util.HashSet;public class HashSetExercise {public static void main(String[] args) {HashSet<String> fruits = new HashSet<>();fruits.add("apple");fruits.add("banana");fruits.add("orange");fruits.add("grape");fruits.remove("banana");for (String fruit : fruits) {System.out.println(fruit);}}}```练习题三:集合的查找和排序请编写Java代码,实现以下功能:1. 创建一个LinkedList集合,用于存储字符串数据。
java集合考试题

1. 什么是Java集合?
2. Java集合框架有哪些核心接口?
3. ArrayList和LinkedList之间有什么区别?
4. HashSet和TreeSet之间有什么区别?
5. HashMap和Hashtable之间有什么区别?
6. 如何遍历ArrayList?
7. 如何遍历HashMap?
8. 如何在ArrayList中添加元素?
9. 如何在HashMap中添加键值对?
10. 如何从ArrayList中移除元素?
11. 如何从HashMap中移除键值对?
12. 如何判断集合是否为空?
13. 如何获取集合的大小?
14. 如何查找ArrayList中的元素?
15. 如何查找HashMap中的值?
16. 如何将ArrayList转换为数组?
17. 如何将数组转换为ArrayList?
18. 如何对ArrayList进行排序?
19. 如何对HashMap进行排序?
20. 如何使用迭代器遍历集合?
21. 如何使用foreach循环遍历集合?
22. 如何使用Lambda表达式遍历集合?
23. 什么是迭代器的fail-fast机制?
24. 如何实现自定义的可排序的集合类?
25. 什么是同步集合?如何使用它们?
26. 如何实现线程安全的集合?
27. 什么是并发集合?如何使用它们?
28. 如何比较两个集合是否相等?
29. 如何复制一个集合?
30. 如何将集合转换为字符串?
希望这些题目能够帮助你进行Java集合的考试准备!如果还有其他问题,请随时提问。
经典Java集合笔试选择题10道

以下是选择试题:选择题1选择题内容:(集合框架)下面都属于线程安全的类是( )。
A.ArrayListB.VectorC.HashMapD.Hashtable选择题2选择题内容:(集合框架)ArrayList的初始化内容如下:ArrayList list = new ArrayList();list.add("java");list.add("aaa");list.add("java");list.add("java");list.add("bbb");下面可以删除list中所有的“java”的代码是:A.for (int i = list.size() - 1; i >= 0; i--) {if ("java".equals(list.get(i))) {list.remove(i);}}B.for (int i = 0; i < list.size(); i++) {if ("java".equals(list.get(i))) {list.remove(i);}}C.list.remove("java");D.list.removeAll("java");选择题3选择题内容:下面的代码用于输出字符数组ch中每个字符出现的次数,应该填入的代码是public static void main(String[] args) {char[] ch = { 'a', 'c', 'a', 'b', 'c', 'b' };HashMap map = new HashMap();for (int i = 0; i < ch.length; i++) {< 填入代码>}System.out.println(map);}A.if (map.contains(ch[i])) {map.put(ch[i], map.get(ch[i]) + 1);} else {map.put(ch[i], 1);}B.if (map.contains(ch[i])) {map.put(ch[i], (Integer) map.get(ch[i]) + 1);} else {map.put(ch[i], 1);}C.if (map.containsKey(ch[i])) {map.put(ch[i], (int) map.get(ch[i]) + 1);} else {map.put(ch[i], 1);}D.if (map.containsKey(ch[i])) {map.put(ch[i], (Integer) map.get(ch[i]) + 1);} else {map.put(ch[i], 1);}选择题4选择题内容:(集合框架) 题示代码的功能为:对于一个存放Integer对象的ArrayList,内容为:{1,2,3 },对其进行循环遍历:List list=new ArrayList();list.add(1);list.add(2);list.add(3);for(int i=0;i<《插入代码1》;i++){Integer obj=(Integer)《插入代码2》;System.out.println(obj);}那么《插入代码1》和《插入代码2》处的代码分别为A. list.getObject(i) list.length()B. list.length() list.getObject(i)C. list.size() list.get(i)D. list.get(i) list.size()对于字符串来说:对于数组来说:选择题5选择题内容:题示代码的功能为:对于一个存放Person对象的ArrayList进行循环遍历,并取到每个Person对象的idCard和userName。
Java集合-练习题

Java集合-练习题⼀、某中学有若⼲学⽣(学⽣对象放在⼀个List中),每个学⽣有⼀个姓名属性(String)、班级名称属性(String)和考试成绩属性(double)某次考试结束后,每个学⽣都获得了⼀个考试成绩。
遍历list集合,并把学⽣对象的属性打印出来//学⽣类public class Student {private String userName;private String gade;private double score;public Student() {super();}public Student(String userName, String gade, double score) {super();erName = userName;this.gade = gade;this.score = score;}public String getUserName() {return userName;}public void setUserName(String userName) {erName = userName;}public String getGade() {return gade;}public void setGade(String gade) {this.gade = gade;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}}//测试类import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class Test {public static void main(String[] args) {Student student1 = new Student("赵⼤", "01班", 60.0);Student student2 = new Student("钱⼆", "02班", 65.0);Student student3 = new Student("张三", "03班", 55.0);Student student4 = new Student("李四", "04班", 80.0);List list = new ArrayList();list.add(student1);list.add(student2);list.add(student3);list.add(student4);//三种遍历⽅法:for (int i = 0; i < list.size(); i++) {Student student = (Student) list.get(i);System.out.println(student.getUserName()+"\t"+student.getGade()+"\t"+student.getScore());}System.out.println("-----------------");for (Object object : list) {Student student =(Student) object;System.out.println(student.getUserName()+"\t"+student.getGade()+"\t"+student.getScore());}System.out.println("--------------------");Iterator iterator =list.iterator();while (iterator.hasNext()) {Student student = (Student) iterator.next();System.out.println(student.getUserName()+"\t"+student.getGade()+"\t"+student.getScore());}}}⼆、使⽤Scanner从控制台读取⼀个字符串,统计字符串中每个字符出现的次数,要求使⽤学习过的知识完成以上要求(实现思路根据Set、List、Map集合的特性完成)。
java集合-练习题

1. 填空Collection 介面の特點是元素是___無序可重複______;List 介面の特點是元素__有__(有|無)順序,_可以___(可以|不可以)重複;Set 介面の特點是元素__無___(有|無)順序,____不可以__(可以|不可以)重複;Map 介面の特點是元素是__key、value映射______,其中__value__可以重複,_key___不可以重複。
2. (List)有如下代碼import java.util.*;public class TestList{public static void main(String args[]){List list = new ArrayList();list.add(“Hello”);list.add(“World”);list.add(1, “Learn”);list.add(1, “Java”);printList(list);}public static void printList(List list){//1for(int i = 0; i< list.size();i++){System.out.println(list.get(i));}for(Object o : list) {System.out.println(o);}Iterator itor = list.iterator();while(itor.hasNext()){System.out.println(itor.next());}}}要求:1) 把//1 處の代碼補充完整,要求輸出list 中所有元素の內容2) 寫出程式執行の結果Hello Java Learn World3) 如果要把實現類由ArrayList 換為LinkedList,應該改哪里?ArrayList 和LinkedList 使用上有什麼區別?實現上有什麼區別?4) 如果要把實現類由ArrayList 換為Vector,應該改哪里?ArrayList 和Vector 使用上有什麼區別?實現上有什麼區別?3. (List)寫出下麵程式の運行結果import java.util.*;public class TestList{public static void main(String args[]){List list = new ArrayList();list.add(“Hello”);list.add(“World”);list.add(“Hello”);list.add(“Learn”);list.remove(“Hello”);list.remove(0);for(int i = 0; i<list.size(); i++){System.out.println(list.get(i));}}}結果: Hello Learn4. (Set,List)import java.util.*;public class TestListSet{public static void main(String args[]){List list = new ArrayList();list.add(“Hello”);list.add(“Learn”);list.add(“Hello”);list.add(“Welcome”);Set set = new HashSet();set.addAll(list);System.out.println(set.size());}}選擇正確答案 CA.編譯不通過B.編譯通過,運行時異常C.編譯運行都正常,輸出3D.編譯運行都正常,輸出45. (List)已知有一個Worker 類如下:public class Worker {private int age;private String name;private double salary;public Worker (){}public Worker (String name, int age, double salary){ = name;this.age = age;this.salary = salary;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) { = name;}public double getSalary(){return salary;}public void setSalary(double salary){this.salary = salary;}public void work(){System.out.println(name + “ work”);}}完成下麵の要求1) 創建一個List,在List 中增加三個工人,基本資訊如下:姓名年齡工資zhang3 18 3000li4 25 3500wang5 22 32002) 在li4 之前插入一個工人,資訊為:姓名:zhao6,年齡:24,工資33003) 刪除wang5 の資訊4) 利用for 迴圈遍曆,列印List 中所有工人の資訊5) 利用迭代遍曆,對List 中所有の工人調用work 方法。
Java集合知识测试--A卷

d)底层是链表结构5.关于迭代器说法错误的是(D}a)迭代器是取出集合元素的方式b)迭代器的hasNext()方法返回值是布尔类型O1.iSt集合有特有迭代器d)next。
方法将返回集合中的上一个元素.6.在我们所学学何中,下面哪儿项是接口(ABCD)a)java.Utll-Mapb)java.util.CollectionU)java.util.1.istd)java.util.Set7 .实现下列哪个接II,可以启用比较功能(D)a)RUnnable接口b)Ixerat×>r接「Ic)Serializable接口d)ComParatOi接口8 .下面代码运行的结果是(八)Array1.ist<String>al=newArray1.ist<String><);al.add(true);al,add(123);al.add(''abc zz);System.out.printIn(al);a)娟译失败b)(true,123]c)[true,123,abc);d)[abc];9 .依据课堂要求重写equals和hashCode后.下面关于这两个方法说法正确的足(BC)a)两个对象的hashCode值相同,则他们利用equals()方法返回值确定为trueb>两个对象的hashcode值相同,则他们冏用equals()方法返I可伯可以为false c}hashCode值一般及对象的成员变趾有关d)只要申与equals方法,就确定要取有hashCode方法10 .将MaP集合中的键存储到Set集合的方法是(C)a)entrySet0b)get()OkeysetOd)put()11 .Java中的集合类包括Irray1.ist.,1.inked1.ist,HaShZaP等类,卜列关于集合类描述正确的是(ABD>a)Array1.ist和1.inked1.ist均实现j'1.ist接口b)Array1.ist的查询速度比1.inked1.ist快C)添加和删除元素时,Array1.Ist的表现更佳d)HashMap实现MaP接口,它允许任何类型的键和值对象,并允许将null用作键或值12.Rrray1.ist和VeCtOr的区分说法正确的是(B)a)Array1.iSt是线程平安的,VeCtOr是战程不平安b)Array1.iSt是线程不平安的.VeetOr•是线程平安的OArray1.iSC底层是数杷结构,VeCtOr底层是徒在结构d)Array1.iSt底层是链表结构,VeCtor底层是数结构13.Array1.ist的初始化内容如下:Array1.ist<String>list=new Array1.isto();list.add("java");list.add(',aaa");list.add("java");list.add("java");list.add(,,bbb");卜面可以册除IiSt中全部的"java"的代码是(八)a)for(int i=list.size()-1;i>=O;i-){if("java”.equals(list.get(i))){list.remove(i);))b)for(int i=0;i<list.size();i++)(if("java".equals(list.get( i))){list.remove(i);))Olist.remove("java");d)list.removeAll("java");14.运用TreeSet的无参构造创隹集合对象行饰元东时,该兀求必需(Aa)实现COmParabIe接口b)有main方法c)有get和set方法d)实现SeriaIIzable接口15.将舜台转成数组的方法是(C)a)as1.ist()b)CoCharArray()OSArray()d)copy()16.F面关于HashMap和HaShtable的区分,说法正确的是(CD)a}HaShtabIe战程不平安,效率高b>HaShEaP线程平安,效率低c»HaShMaP允许null⅛t和伯d}Hashtable不允许null键和伯17.对于增加for循环说法倍误的是(八)a)增加for循环可以干腌诩历MaP集合b)增加for循环可以操作数组c)增加for循环可以操作COlleCtiOn集合d)增加for循环是JDKI.S版本后出现的18.下面的代码用于输出字符数组ch中^个字符出现的次数publicstaticvoid main(String[]args)(char[)ch={,a',,c,z'a',,b,,' c,,'b');HashMapmap-new HashMap();for(int i=0;i<ch.length;i++){〃位置①)System.out.printIn(map);)应当埴入位置①的代码是,不允许运用工具运行程序(CD)a)if(map.contains(ch[i]))(map.put(ch[i],map.get(ch[i])+1);}else{map.put(ch[i],1);)b)if(map.contains(ch(i]))(map.put(ch(i],(Integer)map.get(ch[i])+1);)else(map.put(ch[i],1);)O if(map.ContainsKey(ch[i])){map.put(ch(i),(int)map.get(ch[i])+1);}else{map.put(ch(i],1);)d)if(map.ContainsKey(ch[i])){map.put(ch[i],(Integer)map.get(ch[i])+1);)else(map.put(ch[i],1);)19.对于HaShMaP集合说法正确的毡(C)a)底层是数组结构b)底层是贷衣结构c)可以存储null假和null键d)不行以存储null值和null键20.Collections工具类中的binarySearch方法描述正确的是(B)a)binarysearch。
java集合基础练习题目

java集合基础练习题目Java集合是Java语言中非常重要的一个概念,在编程中经常会用到。
通过练习一些基础的集合题目,可以加深对集合的理解和应用能力。
本文将介绍一些常见的Java集合基础练习题目,并给出相应的解答。
题目1:给定一个整数数组,找出数组中的重复元素,并返回这些重复元素的列表。
解答:可以使用HashSet来解决这个问题。
遍历整数数组,将每个元素加入HashSet中。
如果HashSet已经包含该元素,则说明该元素是重复元素,将其加入到结果列表中。
```javapublic List<Integer> findDuplicates(int[] nums) {List<Integer> result = new ArrayList<>();Set<Integer> set = new HashSet<>();for (int num : nums) {if (set.contains(num)) {result.add(num);} else {set.add(num);}}return result;}```题目2:给定一个字符串,判断该字符串是否是有效的括号序列。
解答:可以使用栈来解决这个问题。
遍历字符串的每个字符,如果是左括号,则将其加入栈中;如果是右括号,则判断栈顶的元素是否与之匹配。
如果匹配,则继续遍历;如果不匹配,则返回false。
遍历结束后,如果栈为空,则说明括号序列有效,返回true;否则,返回false。
```javapublic boolean isValid(String s) {Stack<Character> stack = new Stack<>();for (char c : s.toCharArray()) {if (c == '(' || c == '[' || c == '{') {stack.push(c);} else if (c == ')' && !stack.isEmpty() && stack.peek() == '(') { stack.pop();} else if (c == ']' && !stack.isEmpty() && stack.peek() == '[') { stack.pop();} else if (c == '}' && !stack.isEmpty() && stack.peek() == '{') { stack.pop();} else {return false;}}return stack.isEmpty();}```题目3:给定一个整数数组,找出数组中第k大的元素。
Java集合练习题求学生对象的平均年龄及按班级求平均分数

Java集合练习题求学⽣对象的平均年龄及按班级求平均分数有如下Student 对象,private String name;private int age;private int score;private String classNum;其中,classNum 表⽰学⽣的班号,例如“class05”。
有如下ListList list = new ArrayList();list.add(new Student(“Tom”, 18, 100, “class05”));list.add(new Student(“Jerry”, 22, 70, “class04”));list.add(new Student(“Owen”, 25, 90, “class05”));list.add(new Student(“Jim”, 30,80 , “class05”));list.add(new Student(“Steve”, 28, 66, “class06”));list.add(new Student(“Kevin”, 24, 100, “class04”));在这个list 的基础上,完成下列要求:1)计算所有学⽣的平均年龄2)计算各个班级的平均分主类:1import java.util.ArrayList;23public class TestDay17_1_2 {45public static void main(String[] args) {6 ArrayList<TestDay17_1_2_Student> al = new ArrayList<>();78 al.add(new TestDay17_1_2_Student("Tom", 18, 100, "class05"));9 al.add(new TestDay17_1_2_Student("Jerry", 22, 70, "class04"));10 al.add(new TestDay17_1_2_Student("Owen", 25, 90, "class05"));11 al.add(new TestDay17_1_2_Student("Jim", 30, 80, "class05"));12 al.add(new TestDay17_1_2_Student("Steve", 28, 66, "class06"));13 al.add(new TestDay17_1_2_Student("Kevin", 24, 100, "class04"));1415// 计算平均年龄16//定义总年龄及⼈数变量17int sumAge = 0;18int count = 0;19//遍历集合总年龄累加、⼈数⾃增20for (TestDay17_1_2_Student s : al) {21 sumAge += s.getAge();22 count++;23 }24//计算并输出平均年龄25double averageAge = (sumAge * 1.0) / count;26 System.out.println("平均年龄是:" + averageAge);2728//计算各班级平均分29// 创建储存计算分数的集合30 ArrayList<TestDay17_1_2_Score> alscore = new ArrayList<>();31// 遍历班级唯⼀插⼊成绩对象3233for (int i = 0; i < al.size(); i++) {34//过去当前学⽣对象35 TestDay17_1_2_Student student = al.get(i);36boolean flag = false;//标记没有重复班级名称37for (int j = 0; j < alscore.size(); j++) {38//获取当前班级成绩对象39 TestDay17_1_2_Score score = alscore.get(j);40//判断班级名称是否重复41if (student.getClassNum().equals(score.getClassName())) {42//重复标记设为真43 flag = true;44//修改当前成绩对象中分数和⼈数信息并跳出内循环45 score.setStudentNum(score.getStudentNum()+1);46 score.setSumScore(score.getSumScore() + student.getScore());47break;48 }49 }5051//判断flag如果为假(没有重复)则添加⼀个新的成绩对象52if (!flag) {53 alscore.add(new TestDay17_1_2_Score(student.getClassNum(),1,student.getScore()));54 }55 }56for (TestDay17_1_2_Score score : alscore) {57 System.out.println(score.toString());58 }59 }60 }学⽣类:1public class TestDay17_1_2_Student {23private String name;4private int age;5private int score;6private String classNum;7public TestDay17_1_2_Student() {8super();9// TODO Auto-generated constructor stub10 }11public TestDay17_1_2_Student(String name, int age, int score, String classNum) {12super(); = name;14this.age = age;15this.score = score;16this.classNum = classNum;17 }18public String getName() {19return name;20 }21public void setName(String name) { = name;23 }24public int getAge() {25return age;26 }27public void setAge(int age) {28this.age = age;29 }30public int getScore() {31return score;32 }33public void setScore(int score) {34this.score = score;35 }36public String getClassNum() {37return classNum;38 }39public void setClassNum(String classNum) {40this.classNum = classNum;41 }42 }成绩类:1public class TestDay17_1_2_Score {23private String className;4private int studentNum;5private int sumScore;67public TestDay17_1_2_Score() {8super();9// TODO Auto-generated constructor stub10 }11public TestDay17_1_2_Score(String className, int studentNum, int sumScore) { 12super();13this.className = className;14this.studentNum = studentNum;15this.sumScore = sumScore;16 }17public String getClassName() {18return className;19 }20public void setClassName(String className) {21this.className = className;22 }23public int getStudentNum() {24return studentNum;25 }26public void setStudentNum(int studentNum) {27this.studentNum = studentNum;28 }29public int getSumScore() {30return sumScore;31 }32public void setSumScore(int sumScore) {33this.sumScore = sumScore;34 }3536public double getAverageScore() {37return (this.sumScore * 1.0) / this.studentNum;38 }3940 @Override41public String toString() {42double averageScore = this.getAverageScore();43 String className = this.getClassName();44int studentNum = this.getStudentNum();45int sumScore = this.getSumScore();46return47 (new StringBuffer()).append(className)48 .append("班级有").append(studentNum)49 .append("个同学,总分:").append(sumScore)50 .append(",平均分:").append(averageScore).toString()51 ;52 }53 }。
Java基础之集合测试

Java基础之集合测试单选题:(每道题目2分)1.下面哪个不是集合和数组的区别?a:集合长度可变b:子集就可以存储提及数据类型c:子集就可以存储一种提及数据类型d:子集可以存储相同提及数据类型2.collection中contains()方法的作用是?a:往集合中添加元素b:从集合中删除元素c:推论元素在子集中与否存有d:推论子集与否为空3.下面关于迭代器,说法错误的是?a:专门用于遍历数组b:专门用于遍历集合c:依赖于集合而存在d:内部类的方式实现4.list子集元素的特点就是?a:元素有序b:元素无序c:元素不容重复d:元素自然排序5.list集合的get()方法的作用是?a:获取第一个位置的元素b:获取最后一个位置的元素c:获取指定位置的元素d:获取中间位置的元素6.concurrentmodificationexception就是什么东西?a:空指针异常b:出访越界异常c:初始化异常d:mammalian修正异常7.下面哪个不属于常见的数据结构?a:栈b:队列c:链表d:圆8.arraylist子集的底层数据结构就是?a:数组b:链表c:哈希表中d:红黑一棵9.下面哪个不是vector的特有功能?a:addelement()b:add()c:elementat()d:elements()10.vector集合的特点是?a:线程同步b:线程不同步c:增删快d:底层结构就是链表11.linkedlist集合的特点是?a:查询快b:增删快c:元素唯一d:元素按比较器排序12.下面代码运行的结果是?arraylistal=newarraylist();al.add(true);al.add(123);al.add(\system.out.prin tln(al);a:编译失败b:[true,123,abc]c:[true,123]d:[abc]13.arraylist子集和vector子集的区别观点恰当的就是?a:arraylist就是线程安全的,vector就是线程不安全的b:arraylist就是线程不安全的,vector就是线程安全的c:arraylist底层结构就是数组,vector底层结构就是链表d:arraylist底层结构就是链表,vector底层结构就是数组14.下面代码运行的结果是?arraylistal=newarraylist();al.add(“a”);al.add(“b”);al.add(“c”);iteratorit=al.iterator();while(it.hasnext()){strings=(string)it.next();if(s.equals(“c”)){al.add(“c1”);}}system.out.println(al)a:编译失败b:[a,b,c]c:[a,b,c,c1]d:抛出concurrentmodificationexception异常15.set子集的特点就是?a:元素有序b:元素无序c:元素可以重复d:元素从大到小排序16.有关hashset子集的观点恰当的就是?a:底层数据结构就是链表b:底层数据结构就是数组c:元素就是重复的d:确保元素的唯一性依赖hashcode()和equals()17.有关treeset集合的说法错误的是?a:底层数据结构是红黑树b:元素可重复c:可以通过自然排序对元素进行排序d:可以通过比较器排序对元素进行排序18.有关map子集观点错误的就是?a:map子集由键值对共同组成b:map子集的键可以重复c:map子集的值可以重复d:map子集不是collection子集的子体系19.下面关于hashmap说法正确的是?a:底层数据结构是链表b:底层数据结构是数组c:可以允许null键和null值d:不允许null键和null值20.linkedhashmap子集的底层数据结构就是?a:数组b:栈c:红黑树d:链表和哈希表中多选题:(每道题目3分)21.下面哪些方法就是arraylist和linkedlist都有的?a:add()b:addfirst()c:get()d:iterator()22.以下有关增强for的说法正确的是?a:增强for是jdk5的新特性b:增强for可以直接遍历数组c:增强for可以直接遍历map集合d:进一步增强for可以轻易结点collection子集23.下面关于泛型的说法正确的是?a:泛型是jdk5的新特性b:泛型增强了程序的安全性c:泛型避免了强制类型转换d:泛型要求必须强制类型转换24.arraylist子集可以通过下面哪些方式展开结点a:iterator运算器同时实现b:进一步增强for同时实现c:get()和length()方法结合实现d:get()和size()方法结合实现25.map子集可以通过哪些方式展开结点?a:轻易通过运算器即可b:根据键找值的方式c:根据for循环轻易结点d:根据键值对对象打听键和值的方式简答题目:(每道题目3分)26:arraylist,vector以及linkedlist的特点?arraylist:底层数据结构是数组,查询快,增删慢线程不安全,效率高vector:底层数据结构就是数组,查阅慢,更动快线程安全,效率高linkedlist:底层数据结构是链表,查询慢,增删快线程不安全,效率高27:hashmap和hashtable的区别?a:hashmap线程不安全,效率高。
java集合练习——题目

private String name;
private int age;
private int score;
private String classNum;
其中,classNum 表示学生的班号,例如“class05”。 有如下List
List list = new ArrayList();
网络错误503请刷新页面重试持续报错请尝试更换浏览器或网络环境
java集合练习 ——题目
2、已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数
2008 北京奥运会男足参赛国家:
科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,新西 兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大 利
}
5、(Map)设计Account 对象如下:
private long id;
private double balance;
private String password;
要求完善设计,使得该Account 对象能够自动分配id。 给定一个List 如下:
List list = new ArrayList();
}
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
public class TestAccount {
public static void main(String[] args) { List<Account1> list=new ArrayList<>(); list.add(new Account1(10.00,"1234")); list.add(new Account1(15.00,"5678")); list.add(new Account1(0,"1010")); Map<Long,Account1> map=new HashMap<>(); for(Account1 temp:list){ map.put(temp.getId(), temp); } for(Long id:map.keySet()){ System.out.println("ID="+id+" 余额为:"+map.get(id).getBalance()); }
JAVA集合 练习题

= name; this.age = age; this.salary = salary; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { = name; } public double getSalary(){ return salary; } public void setSalary(double salary){ this.salary = salary; } public void work(){ System.out.println(name + “ work”); } } 完成下面的要求 1) 创建一个 List,在 List 中增加三个工人,基本信息如下: 姓名 年龄 工资 zhang3 18 3000 li4 25 3500 wang5 22 3200 2) 在 li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资 3300 3) 删除 wang5 的信息 4) 利用 for 循环遍历,打印 List 中所有工人的信息 5) 利用迭代遍历,对 List 中所有的工人调用 work 方法。 6) 为 Worker 类重写 equals 方法,当姓名、年龄、工资全部相等时候才返回 true
System.out.println(list.get(i)); }
for(Object o : list) { System.out.println(o); }
Iterator itor = list.iterator(); while(itor.hasNext()){ System.out.println(itor.next()); }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
import java.util.*; public class TestList{ public static void main(String args[]){ List list = new ArrayList(); list.add(“Hello”); list.add(“World”); list.add(“Hello”); list.add(“Learn”); list.remove(“Hello”); list.remove(0); for(int i = 0; i<list.size(); i++){ System.out.println(list.get(i)); } } } 结果: Hello Learn
6. (Set,Hash 算法)为上一题的 Worker 类,在添加完 equals 方法的基础上,{ //1 } 有几种写法:
1) return 0; 2) int result = 0; if (name != null) result = name.hashCode(); return result + age; 3) return super.hashCode(); 现在要把 Worker 类放入 HashSet 中,并希望在 HashSet 中没有重复元素,则下面说法正 确的是: A. 三种写法都正确 B. 1), 2)写法正确,2)效率更高 C. 2)写法正确,1),3)写法都不正确
//Worker
10. (Map)关于下列 Map 接口中常见的方法 put 方法表示放入一个键值对,如果键已存在则__覆盖___,如果键不存在则 ____添加_____。 remove 方法接受__1_个参数,表示______key____________。 get 方 法 表 示 _______ 获 得 key 对 应 的 value________________ , get 方 法 的 参 数 表 示 __key___,返回值表示__value__。 要 想 获 得 Map 中 所 有 的 键 , 应 该 使 用 方 法 __keySet_________ , 该 方 法 返 回 值 类 型 为 ____Set<key>__。 要 想 获 得 Map 中 所 有 的 值 , 应 该 使 用 方 法 __values_________ , 该 方 法 返 回 值 类 型 为 _Collection<Value>______。 要想获得 Map 中所有的键值对的集合,应该使用方法_entrySey__________,该方法返回一 个 _Map.Entry<K,V>_____类型所组成的 Set。
Worker 放入 HashSet 中时,Set 中没有重复元素。 并编写相应的测试代码。
9. (Set,Comparable 接口)在前面的 Worker 类基础上,为 Worker 类添加相应的代码, 使得 Worker 对象能正确放入 TreeSet 中。并编写相应的测试代码。 注:比较时,先比较工人年龄大小,年龄小的排在前面。如果两个工人年龄相同,则再 比较其收入,收入少的排前面。如果年龄和收入都相同,则根据字典顺序比较工人姓名。例 如:有三个工人,基本信息如下: 姓名 年龄 工资 zhang3 18 1500 li4 18 1500 wang5 18 1600 zhao6 17 2000 放入 TreeSet 排序后结果为: zhao6 li4 zhang3 wang5
7. (Set,Hash 算法,方法覆盖)代码改错 import java.util.*; class Worker{ String name; int age; double salary; public Worker(){} public Worker(String name, int age, double salary){ = name; this.age = age; this.salary = salary; } int hashCode(){ return name.hashCode() + age + salary; } public boolean equals(Worker w){ if ( == name && w.salary == salary && w.age == age){ return true; }else return false; } } public class TestWorker{ public static void main(String args[]){ Set set = new HashSet(); set.add(new Worker(“tom”, 18, 2000)); set.add(new Worker(“tom”, 18, 2000)); set.add(0, new Worker(“jerry”, 18, 2000)); System.out.println(set.size()); } } 8. (Set,Hash 算法)在前面的 Worker 类基础上,为 Worker 类增加相应的方法,使得
1. 填空 Collection 接口的特点是元素是___无序可重复______; List 接口的特点是元素__有__(有|无)顺序,_可以___(可以|不可以)重复; Set 接口的特点是元素__无___(有|无)顺序,____不可以__(可以|不可以)重复; Map 接口的特点是元素是__key、value 映射______,其中__value__可以重复,_key___不 可以重复。
Map<String,String> map=HashMap<String,String>();
12. (Map)已知某学校的教学课程内容安排如下:
完成下列要求: 1) 使用一个 Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述 课程安排。 2) 增加了一位新老师 Allen 教 JDBC 3) Lucy 改为教 CoreJava put 方法 4) 遍历 Map,输出所有的老师及老师教授的课程(Set<Map.Entry<String,String>>、 Set<String> get(key)) 5) *利用 Map,输出所有教 JSP 的老师。
5. (List)已知有一个 Worker 类如下: public class Worker { private int age; private String name; private double salary; public Worker (){} public Worker (String name, int age, double salary){
} } 要求: 1) 把//1 处的代码补充完整,要求输出 list 中所有元素的内容 2) 写出程序执行的结果 Hello Java Learn World 3) 如果要把实现类由 ArrayList 换为 LinkedList,应该改哪里?ArrayList 和 LinkedList 使用上有什么区别?实现上有什么区别? 4) 如果要把实现类由 ArrayList 换为 Vector,应该改哪里?ArrayList 和 Vector 使 用上有什么区别?实现上有什么区别?
= name; this.age = age; this.salary = salary; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { = name; } public double getSalary(){ return salary; } public void setSalary(double salary){ this.salary = salary; } public void work(){ System.out.println(name + “ work”); } } 完成下面的要求 1) 创建一个 List,在 List 中增加三个工人,基本信息如下: 姓名 年龄 工资 zhang3 18 3000 li4 25 3500 wang5 22 3200 2) 在 li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资 3300 3) 删除 wang5 的信息 4) 利用 for 循环遍历,打印 List 中所有工人的信息 5) 利用迭代遍历,对 List 中所有的工人调用 work 方法。 6) 为 Worker 类重写 equals 方法,当姓名、年龄、工资全部相等时候才返回 true
System.out.println(list.get(i)); }
for(Object o : list) { System.out.println(o); }
Iterator itor = list.iterator(); while(itor.hasNext()){ System.out.println(itor.next()); }
11. (Map)利用 Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。 附:世界杯冠军以及对应的夺冠年份,请参考本章附录。 附录 1. 截止到 2009 年为止,历届世界杯冠军
2. 2008 北京奥运会男足参赛国家: 科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚、日本,美国,中国,新西 兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利
2. (List)有如下代码 import java.util.*; public class TestList{ public static void main(String args[]){ List list = new ArrayList(); list.add(“Hello”); list.add(“World”); list.add(1, “Learn”); list.add(1, “Java”); printList(list); } public static void printList(List list){ //1 for(int i = 0; i< list.size();i++){