思路解析:
首先,我先对题目进行一个简要的分析:
- 这次我们输入的是整数,所以我们需要使用到nextInt().然后在每一行都需要输入一个数字,这是需要使用到for循环语句,当i的值小于第一行输入的总数的情况下会不断的输入新数字.
- 这里我们涉及到去重的功能实现,我们在这里可以使用HashSet或者使用TreeSet直接具有去重的功能,此时集合当中只有不重复的元素,我们可以通过for遍历的方式将集合中的值输出即可达到题目要求的功能.如果不懂得HashSet的语法的话我们就必须将输入的值仍到数组当中然后通过在遍历过程中前后值进行比较然后删除然后达到最终的要求.但是那样的话会浪费大量的时间.
具体实现如下:
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int N = in.nextInt();
HashSet<Integer> set = new HashSet<>();
for (int i = 0; i < N; i++) {
set.add(in.nextInt());
}
//Object[] wang = set.toArray();
for (Integer integer : set) {
System.out.println(integer);
}
}
}
注意:第一个就是set自带的有add的功能,如果我们不使用这个功能就需要通过数组的方式添加,第二个就是我们在遍历的时候可以使用封装过的Integer,而不需要每次都通过i来实现功能一样但是语句十分精炼.
总结:HashSet和TreeSet的相同点和不同点
相同点 : 单例集合,数据不可重复
不同点
- 底层使用的储存数据结构不同:
1.Hashset底层使用的是HashMap哈希表结构储存\ 2.而Treeset底层用的是TreeMap树结构储存。
- 储存的数据保存唯一方式不用。
1.Hashset是通过复写hashCode()方法和equals()方法来保证的。\ 2.而Treeset是通过Compareable接口的compare to方法来保证的。
- hashset无序而Treeset有序