集合练习题
前面几篇我们学习HashSet和LinkedHashSet的原理和基本使用,这篇,我们来练习下这两个类的相关的集合编程练习题。
一.生成10个1到20之间的不重复的随机数
分析过程:
1. 需要生成随机数,那么需要Random类
2. 需要存储10个不能重复的数,需要HashSet集合(当前treeset还没学习到)
3. 判断,当HashSet的Size小于10就往里存储随机数,等于就停止添加存储元素
4. 通过Random的nextint()方法获取随机数并加入到HashSet里
5. 遍历HashSet,打印出10个随机数
根据上面的分析过程,我们来写一个测试代码。
package hashset;
import java.util.HashSet;
import java.util.Random;
public class Test1_HashSet {
public static void main(String[] args) {
//1.创建Random对象
Random r = new Random();
//2.创建HashSet对象
HashSet<integer> hs = new HashSet<>(); //注意是包装类不是int
//3.判断并添加元素
while(hs.size()< 10) {
//4.通过Random中随机方法nextInt()获取1到20范围内随机数
hs.add(r.nextInt(20) + 1); //如果不加1,随机范围是0到19
}
//5.遍历HashSet
for (Integer integer : hs) {
System.out.println(integer);
}
}
}
运行输出:
16
17
4
6
9
10
11
12
13
15
二.从键盘获取一行输入字符串,要求去除重复字符。
分析过程:
1. 需要使用scanner类
2. 输入的是一行字符串,需要转换成字符数组
3. 创建HashSet集合对象
4. 字符数组遍历元素,并添加进入HashSet集合
5. 变量集合元素
根据上面分析过程,来写一个测试代码
package hashset;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import javax.swing.plaf.synth.SynthSpinnerUI;
public class Test2_HashSet {
public static void main(String[] args) {
//1.创建键盘输入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入一行字符串:");
String line = sc.nextLine();
//2.字符串转换成字符数组
char[] c = line.toCharArray();
//3.字符数组转换成集合对象,创建HashSet
HashSet<Character> hs = new HashSet<>();
//4.遍历数组,元素依次添加进集合
for (int i = 0; i < c.length; i++) {
hs.add(c[i]);
}
//5.遍历HashSet集合
for (Character character : hs) {
System.out.println(character);
}
}
}
我这边测试,没有问题,输出都进行了字符去重效果。
三.把List集合中的重复元素去除
分析过程:
1. 首先需要有一个List集合,我们就使用ArrayList
2. 给ArrayList集合添加一些重复元素
3. 调用一个去除重复元素的方法(LinkedHashSet实现)
4. 打印去除重复之后的ArrayList元素
好了,关键的地方在于,我们如何写这个去除重复元素的方法,如果使用LinkedHashSet实现。看下面的代码,注意看代码备注部分。
package hashset;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
public class test3_HashSet {
public static void main(String[] args) {
//1.创建一个ArrayList集合并添加重复元素
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("c");
//2.调用去重方法
getSingle(list);
//3.遍历去重之后list集合
System.out.println(list);
}
public static void getSingle(List<String> ls) {
//1.新建一个LinkedHashSet对象
LinkedHashSet<String> lhs = new LinkedHashSet<>();
//2.将List所有元素添加到LinkedHashSet
lhs.addAll(ls); //集合作为一个参数传入
//3.先把原来的List给清空
ls.clear();
//4.把LinkedHashSet集合元素添加到List
ls.addAll(lhs);
}
}
运行结果:
[a, b, c]
相关阅读
java.lang.NullPointerException
对于任意的Object,判断其是否为null,应该将Object xx==null写在所有判断条件的前头,一个为null的东西,调用其自身的任何方法都会出现
HTTP Status 500 - Request processing failed; neste
HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerExceptiontype Exception reportmess
今天在开发的时候用到了枚举类,刚开始还没有发现问题,定义好枚举类之后,为该类定义了属性,此时问题来了,发现编辑器报错,规则代码
点击上方“方志朋”,选择“置顶或者星标” 你的关注意义重大! ✎前言 现在使用NIO的场景越来越多,很多网上的技术框架或多或
Eclipse:形式, 选中项目右键命令行形式:1.编写Java类2.命令行指定到项目/src文件夹,编译3.编写manifest文件4.目录重新定位到bin/cla