HashSet的使用 以及java文件命名基础 实训笔记作业1
HashSet:
(1)为啥要用HashSet?
假如我们现在想要在一大堆数据中查找X数据。LinkedList的数据结构就不说了,查找效率低的可怕。ArrayList那,如果我们不知道X的位置序号,还是一样要遍历一次直到查到结果,效率一样可怕。HashSet天生就是为了提高查找效率的。
(2)hashCode散列码
散列码是由对象导出的一个整数值。在Object中有一个hashCode方法来得到散列码。基本上,每一个对象都有一个默认的散列码,其值就是对象的内存地址。但也有一些对象散列码不同,比如String对象,他的散列码是对内容的计算结果。
(一)添加方法
add(value)方法,可以向Set添加一个元素。set不能存储重复的元素,但是可以存储null元素。如果需要存储多个重复的值,可以用list。
addAll方法,可以将一个集合整体加入到Set中。注意:加入到set中的元素是没有顺序的,并且没有重复。
(二)删除方法
remove方法,可以删除指定的一个元素。set.remove(元素)
removeAll方法,可以从set中批量删除一部分数据。注意:相当于两个集合相减。
clear方法,可以快速清空整个set。set.clear()
(三)遍历方法
1.使用for循环遍历。for(String s : set){System.out.println(s);}
2.使用迭代器iterator进行遍历。Iterator<String> iter = set.iterator();
whiel(iter.hashNext()){
System.out.println(iter.next());
}
迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部。Java迭代器<<interface>> iterator,我们可以对某个序列实现该interface,来提供标准的java迭代器。iterator接口实现后的功能是“使用”一个迭代器。
定义:
Package iava.util;
public interface Iterator<E>{
boolean hasNext();//判断是否存在下一个元素
E next();
void remove();
}
(四)其他方法
size方法,获取set中元素的个数。int size = set.size();
isEmpty方法,判断set对象是否为空。boolean is = set.isEmpty();
(五)查找指定的元素
可以通过迭代器遍历来查找指定的元素。
JAVA程序的组织方式:
类是java程序的最小程序单位。
1.java程序是一种纯粹的面向对象的程序设计语言,因此java程序必须以类的形式存在。
2.java程序不允许可执行语句,方法等成分独立存在,所有程序部分都必须放在类定义里。
main方法是程序执行的入口。
1.main方法写法固定。必须被public static void修饰,且其形参必须是字符串数组类型(String[] args)
2.JVM从main方法开始解释执行,因此main是java程序的入口。
3.对于一个大型java程序,往往只需要一个入口(即只一个类包含main方法),其他类被main方法直接或间接调用。
为什么main方法必须写成public static void main(String[] args)形式?
JAVA源文件的命名规则
1.通常情况下,java程序源文件的主文件名可以任意。
2.但如果其中定义了一个public类,则该源文件的文件名必须与该public类的类名相同
3.一个java源文件可包含多个类定义,但最多只能包含一个publlic类定义。
为什么只能包含一个public类?
因为public类可以被项目中其他包下的类访问。只需要在使用前import其相应的class文件。将类名与文件名一一对应可以方便虚拟机在相应的路径(包名—)中找到相应的类的信息。如果不这么做的话,就很难取找,而且开销也会很大。
1.java编译器在编译的时候,如果整个java文件都没有public类(对外的公开接口类—),类加载器就无需直接去加载该编译单元产生的所有字节码文件(.class),那么也就是无需去寻找编译后的字节码文件。所以没有public的java文件中,文件名和类名都没什么联系。
2.如果编译单元中包含了public类,那么该类对应的字节码文件需要被类加载器加载,这时候就需要让类加载器知道该字节码文件的位置,所以就要确保该类与JAV文件名称一致。
主类
类的名字和文件名一致,并且包含main函数的类,叫做主类。
所谓主类是程序的入口,要让JVM找到执行的入口,必须:
1. 类名字和文件名一致
2.包含public static void main(String[] args)
注意该类并不需要一定有public修饰。已有网友在eclipse测试过。可以输出想要的结果。