JavaSE集合练习题

  • 简答
  • 编程
  • 参考文献

简答

1.Collection 和 Collections的区别

解:Collection是集合类的上级接口,继承于他的接口主要有 Set 和 List

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作

2.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别

解:Set里的元素是不能重复的,用equals()方法判读两个Set是否相等

equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值

3.List, Set, Map是否继承自Collection接口

解:List,Set 继承自 Collection 接口

Map不是继承Collection 接口

4.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对

解:不对,有相同的 hash code

5.说出ArrayList,Vector, LinkedList的存储性能和特性

解:共同点 :三个类都是实现了 List接口,存储数据的特点相同:存储有序的,可重复的数据区别: ArrayList :作为 List接口的主要实现类;线程不安全的,效率高;底层使用 Object[] elementData 存储LinkedList:对于频繁的插入,删除操作,使用此类效率比 ArrayList高;底层使用双向链表存储Vector :作为 List接口的古老实现类;线程安全的,效率低;底层使用 Object[] elementData 存储

6.HashMap和Hashtable的区别

1.HashMap与Hashtable都实现了Map接口。由于HashMap的非线程安全性,效率上可能高于Hashtable。Hashtable的方法是
Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须
为之提供外同步
2. HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
3.HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解
4.Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现
5.Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异

7.你所知道的集合类都有哪些?主要方法?

最常用的集合类是 List 和 Map。
List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。
List 适用于按数值索引访问元素的情形。
Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值

编程

1.定义一个Collection接口类型的变量,引用一个Set集合的实现类,实现添加单个元素,添加另一个集合,删除元素,判断集合中是否包含一个元素,判断是否为空,清除集合,返回集合里元素的个数等常用操作

注:Set接口中没有额外定义新的方法,使用的都是 Collection 中声明的方法

package com.atguigu.com;import java.util.Collection;
import java.util.HashSet;public class exer1 {public static void main(String[] args) {Collection coll1 = new HashSet();//1.添加单个元素coll1.add(123);coll1.add("九十九");coll1.add(12.56);//2.添加另一个集合Collection coll2 = new HashSet();coll2.add("coll2");coll2.add(false);coll1.addAll(coll2);//3.删除元素coll1.remove(12.56);//4.判断集合中是否包含一个元素coll1.contains(false);//5.判断是否为空coll1.isEmpty();//6.清除集合coll1.clear();//7.返回集合里元素的个数coll1.size();}
}

2.创建Set接口的实现类,添加10个以上的元素,通过Iterator遍历此集合元素

package com.atguigu.com;import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;public class exer2 {public static void main(String[] args) {Set set = new HashSet();//添加元素set.add(12);set.add(12.4);set.add('c');set.add(true);set.add(false);set.add("九十八");set.add("学而不思则罔");set.add("思而不学则殆");set.add("温故而知新");set.add("可以为师矣");//使用Iterator 遍历此集合Iterator iterator = set.iterator();//搭配hasNext()和next()方法while(iterator.hasNext()){System.out.println(iterator.next());}}
}
c
12.4
false
九十八
学而不思则罔
温故而知新
可以为师矣
思而不学则殆
12
true

3.创建Set接口的实现类,添加10个以上的元素,通过foreach遍历此集合元素

package com.atguigu.com;
import java.util.HashSet;import java.util.Set;
public class exer3 {public static void main(String[] args) {Set set = new HashSet();//添加元素set.add(12);set.add(12.4);set.add('c');set.add(true);set.add(false);set.add("九十八");set.add("学而不思则罔");set.add("思而不学则殆");set.add("温故而知新");set.add("可以为师矣");//使用foreach来遍历集合//for(集合元素的类型 局部变量 : 集合对象){}for(Object i : set){System.out.println(i);}}
}
c
12.4
false
九十八
学而不思则罔
温故而知新
可以为师矣
思而不学则殆
12
true

4.创建Set接口的实现类,添加10个以上的元素,要求能够排序

注:向 TreeSet 中添加的数据,要求是相同类的对象

package com.atguigu.com;import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;public class exer4 {public static void main(String[] args) {//定制排序Comparator com = new Comparator() {//对字符串进行排序 从大到小@Overridepublic int compare(Object o1, Object o2) {if(o1 instanceof String && o2 instanceof String){String str1 = (String)o1;String str2 = (String)o2;return -str1.compareTo(str2);}else{throw new RuntimeException("输入数据类型不匹配!");}}};TreeSet tree = new TreeSet(com);tree.add("abcd");tree.add("cdac");tree.add("zsdc");Iterator iterator = tree.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}}
}
zsdc
cdac
abcd

记录:java 比较器 comparable 和 comparator 需要复习,一调用比较器就犯迷糊

5.定义一个Collection接口类型的变量,引用一个List集合的实现类,实现添加单个元素,添加另一个集合,删除元素,判断集合中是否包含一个元素,判断是否为空,清除集合,返回集合里元素的个数等常用操作

package com.atguigu.com;import java.util.ArrayList;
import java.util.Collection;public class exer5 {public static void main(String[] args) {ArrayList list = new ArrayList();//1.添加单个元素 可重复list.add(123);list.add(456);list.add(false);list.add(456);//2.添加另一个集合ArrayList list1 = new ArrayList();list1.add(12.4);list1.add(34.6);list.add(list1);//将list1作为一个元素添加到list中list.addAll(list1);//将list1中的每个元素迭代添加到list中//3.删除元素//3.1 按照元素删除list.remove(false);//3.2按照索引删除list.remove(2);//4.判断集合中是否包含一个元素list.contains(true);//5.判断是否为空list.isEmpty();//6.清除集合list.clear();//7.返回集合里元素的个数list.size();}
}

6.创建ArrayList实例化对象,添加10个以上的元素,在2号位插入一个元素,获得5号位元素,删除6号位元素,修改7号位的元素;

package com.atguigu.com;import java.util.ArrayList;public class exer6 {public static void main(String[] args) {ArrayList list = new ArrayList();//演示 采用for循环迭代添加元素for(int i = 0;i < 10;i++){list.add(i);}//在2号位插入一个元素  2号位默认为索引list.add(2,"insert");//获得5号位元素list.get(5);//删除6号位元素 idea中可以显示是索引还是元素值list.remove(6);//修改7号位的元素list.set(7,"new");}
}

7.通过四种方法遍历上题中的集合

package com.atguigu.com;import java.util.ArrayList;
import java.util.Iterator;public class exer7 {public static void main(String[] args) {ArrayList list = new ArrayList();//演示 采用for循环迭代添加元素for(int i = 0;i < 10;i++){list.add(i);}//在2号位插入一个元素  2号位默认为索引list.add(2,"insert");//获得5号位元素list.get(5);//删除6号位元素 idea中可以显示是索引还是元素值list.remove(6);//修改7号位的元素list.set(7,"new");//使用iterator 进行遍历Iterator iterator = list.iterator();while(iterator.hasNext()){System.out.print(iterator.next() + " ");}System.out.println();//使用foreach 进行遍历for(Object obj:list){System.out.print(obj + " ");}System.out.println();//使用for进行遍历for(int i = 0; i < list.size();i++){System.out.print(list.get(i) + " ");}System.out.println();//使用Lambda表达式的forEach  之前没用过这种结构list.forEach(item -> System.out.print(item + " "));}
}
0 1 insert 2 3 4 6 new 8 9
0 1 insert 2 3 4 6 new 8 9
0 1 insert 2 3 4 6 new 8 9
0 1 insert 2 3 4 6 new 8 9

8.按要求实现下列问题
1)封装一个新闻类,包含标题和内容属性,提供get、set方法,重写toString方法,打印对象时只打印标题;

2)只提供一个带参数的构造器,实例化对象时,只初始化标题;并且实例化两个对象:
新闻一:中国多地遭雾霾笼罩空气质量再成热议话题
新闻二:春节临近北京“卖房热”

3)将新闻对象添加到ArrayList集合中,并且使用ListIterator倒序遍历;

4)在遍历集合过程中,对新闻标题进行处理,超过15字的只保留前14个,然后在后边加“…”

5)在控制台打印遍历出经过处理的新闻标题;

package com.atguigu.com;public class News {private String title;private String content;public News(String title){this.title = title;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}@Overridepublic String toString() {return "News{" +"title='" + title + '\'' +'}';}
}
package com.atguigu.com;import java.util.ArrayList;
import java.util.Collection;
import java.util.ListIterator;public class NewsTest {public static void main(String[] args) {News n1 = new News("中国多地遭雾霾笼罩空气质量再成热议话题");News n2 = new News("春节临近北京\"卖房热\"");ArrayList list = new ArrayList();list.add(n1);list.add(n2);ListIterator iterator = list.listIterator();//指针位于开头while(iterator.hasNext()) {//不断循环 将指针位于结尾iterator.next();}//逆向遍历while(iterator.hasPrevious()) {Object obj = iterator.previous();News n = (News) obj;String title = n.getTitle();if(title.length() > 15){System.out.println(title.substring(0,15) + "...");}else{System.out.println(title);}}}
}

9 定义一个Map接口类型的变量,引用一个实现类,添加键值对,判断集合中是否包含某一key值,通过某一key值得到value值,通过某一key删除键值对,把另一个map集合添加到此map集合,判断是否为空,清除集合,返回集合里元素的个数等常用操作

package com.atguigu.com;import java.util.HashMap;public class exer9 {public static void main(String[] args) {HashMap map = new HashMap();//添加键值对map.put("AA",123);map.put(45,123);map.put("BB",56);//判断集合中是否包含某一key值map.containsKey("CC");//通过某一key值得到value值map.get("AA");//通过某一key删除键值对map.remove("BB");//把另一个map集合添加到此map集合HashMap map1 = new HashMap();map1.put("DD",452);map1.put("EE",123);map.putAll(map1);//判断是否为空map.isEmpty();//清除集合map.clear();//返回集合里元素的个数map.size();}
}

10.通过两种方法遍历上题中的map集合

package com.atguigu.com;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class exer10 {public static void main(String[] args) {HashMap map = new HashMap();//添加键值对map.put("AA",123);map.put(45,123);map.put("BB",56);//判断集合中是否包含某一key值map.containsKey("CC");//通过某一key值得到value值map.get("AA");//通过某一key删除键值对map.remove("BB");//把另一个map集合添加到此map集合HashMap map1 = new HashMap();map1.put("DD",452);map1.put("EE",123);map.putAll(map1);//判断是否为空map.isEmpty();//清除集合//map.clear();//返回集合里元素的个数map.size();//遍历集合//方式一:entrySet()Set entrySet = map.entrySet();Iterator iterator = entrySet.iterator();while (iterator.hasNext()){Object obj = iterator.next();//entrySet 集合中的元素都是entryMap.Entry entry = (Map.Entry) obj;System.out.println(entry.getKey() +"----->" + entry.getValue());}System.out.println("---------------");//方式二Set keySet = map.keySet();Iterator iterator1 = keySet.iterator();while (iterator1.hasNext()){Object key = iterator1.next();Object value = map.get(key);System.out.println(key +"----->" + value);}}
}

11.使用Map接口的实现类完成员工工资(姓名–工资)的摸拟:

1)添加几条信息
2)列出所有的员工姓名
3列出所有员工姓名及其工资
4)删除名叫“Tom”的员工信息
5)输出Jack的工资,并将其工资加1000元(通过取值实现)
6)将所有工资低于1000元的员工的工资上涨20%(通过取值实现)

package com.atguigu.com;import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;public class exer11 {public static void main(String[] args) {HashMap map = new HashMap();//添加数据map.put("张三",500);map.put("李四",600);map.put("Tom",6000);map.put("王五",7000);map.put("jack",8000);//列出所有的员工姓名Set nameSet = map.keySet();Iterator iterator = nameSet.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}System.out.println("***************");//列出所有员工姓名及其工资Iterator iterator1 = nameSet.iterator();while (iterator1.hasNext()){Object name = iterator1.next();Object salary = map.get(name);System.out.println(name +"----->" + salary);}//删除名叫""Tom"”"的员工信息map.remove("Tom");//输出Jack的工资,并将其工资加1000元(通过取值实现)double salaryJack = (double)map.get("jack");System.out.println(salaryJack);map.put("jack",salaryJack + 1000);Set nameSet2 = map.keySet();Iterator iterator2 = nameSet2.iterator();while(iterator2.hasNext()){Object name = iterator2.next();double salary = (double)map.get(name);if(salary < 1000){map.put(name,salary * 1.2);}}}
}

参考文献

链接: B站尚硅谷宋红康Java.

JavaSE集合练习题相关推荐

  1. JavaSE基础练习题

    JavaSE基础练习题 作者:田超凡 版权所有,转载请注明原作者,仿冒侵权必究法律责任 选择题:(3*10) 1) 下列说法正确的是(C) A.运算符优先级最高的是关系运算 B.数组的长度在使用过程中 ...

  2. Java集合框架篇-63-TreeSet集合练习题

    这篇,我们通过前面学习的TreeSet集合和比较器的知识,我们来做几个练习题.在完成练习过程中,我们重点放在问题分析这个步骤上面,只有分析的思路的正确性,才能写出正确的代码,完成编程练习题. 第一题 ...

  3. JavaSE——集合

    集合 一.集合概述 什么是集合?有什么用? 数组其实就是一个集合.集合实际上就是一个容器.可以用来容纳其他类型的数据. 在实际开发中,假设连接数据库,数数据库当中有10条记录,那么假设把这10条记录封 ...

  4. Python字典与集合练习题

    学习中遇到这样一个练习题,统计需要取快递人员名单.原题如下: 统计需要取快递人员的名单:"双十一"过后,某公司每天都能收到很多快递,门卫小李想编写一个程序统计收到快递人员的名单,以 ...

  5. [javaSE] 集合框架(Map概述)

    Map集合,将key对象映射到value对象 三个主要的子类:Hashtable,HashMap,TreeMap Hashtable:底层是哈希表数据结构,不允许使用null值,线程同步 HashMa ...

  6. JavaSE—集合框架

    2019独角兽企业重金招聘Python工程师标准>>> 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础 ...

  7. Java——集合(练习题)

    例题1:产生10个1~20之间的随机数,要求随机数不能重复 import java.util.HashSet; import java.util.Random; public class Test1 ...

  8. [javaSE] 集合工具类(Collections-sort)

    java为我们提供了一个集合的工具类,方便我们对集合进行操作,里面的方法都是静态方法. Collections.sort()方法,参数:List<T>集合对象,这个对象带着泛型,是为了保证 ...

  9. [javaSE] 集合框架(迭代器)

    当我们创建一个集合以后,可以直接使用system.out.println()来打印这个集合,但是,我们需要可以对每个元素进行操作,所以,这里需要使用迭代器来遍历集合 迭代器其实就是集合取出元素的方式 ...

  10. Map集合练习题(坐公交车)

    题目要求 [1]将以下车站对应关系的数据存储到map集合中, key:表示站编号,value:表示站名, 并遍历打印(可以不按顺序打印): 站编号和站名对应关系如下: 1 朱辛庄 2 育知路 3 平西 ...

最新文章

  1. 使用Python,OpenCV线程化方式提高视频FPS(每秒帧数)
  2. python3读取excel数据-python3读取Excel表格数据的代码分享
  3. Python基础知识(第一天)
  4. [云炬python3玩转机器学习笔记] 3-6Numpy数组和矩阵的合并和分割
  5. 脸部螨虫和肥皂洗脸的问题
  6. 数据库实例:用户登录
  7. JAVA入门级教学之(三元运算符)
  8. wince手机投屏代码_除了 iOS,这些手机系统你肯定没用过
  9. 爱快助力元气森林随时随地高效办公
  10. 经典排序算法(二)--桶排序Bucket Sort
  11. 【OpenCV学习笔记】【函数学习】十四(cvSeq的用法说明(功能很多,按照需求使用))
  12. abaqus编写本构方程vumat_abaqus vumat sdv
  13. 强联通分量:Tarjan缩点
  14. 设计模式——工厂方法模式
  15. 本地服务启动慢问题及dubbo测试方法记录
  16. vcf 格式文件详解
  17. vant4的showtoast非正常显示问题
  18. 王子恢:手机视频牌照与行政权力租界
  19. systemd 介绍
  20. 新手如何起步做好微商,微商如何加精准好友?微商如何选产品!如何让别人主动加微信,怎么让别人主动加我微信!

热门文章

  1. 服装CAD计算机试衣的好处,浅议服装CAD三维试衣探究及创新.doc
  2. Siamese Network(孪生网络)
  3. 营业执照识别项目记录--CTPN使用
  4. 用PLC和触摸屏设计用户可编程的控制项目
  5. 游戏开发完整学习路线,都在这里了
  6. 踩坑内核参数tcp_tw_recycle
  7. 训练集与测试集分布差距
  8. Turbo码 - 接近完美的编码
  9. (一)Redfish简介
  10. python pymysql 下载_Python PyMySQL模块下载和安装