1,分析:HashMap TreeMap 键怎么做到唯一的,不重复的
HashMap判断键唯一的方式与HashSet是一样
当我们使用Map集合,添加自定义了对象[元素],注意判断元素唯一,
HashMap需要:自定义元素的类,中,需要覆写hashCode equals
HashMap 代码示例:
public static void main(String[] args) {
HashMap hmp = new HashMap();
Student stu1 = new Student("小明",10);
Student stu2 = new Student("小明",20);
hmp.put(stu1, 18);
hmp.put(stu2, 18);
System.out.println(hmp.size());
System.out.println(hmp);
}
class Student{
int age;
String name;
public Student(String name,int age) {
super();
this.name = name;
this.age = age;
}
//@Override
//public int hashCode() {
//
return 0;
//}
//@Override
//public boolean equals(Object obj) {
//return false;
//}
@Override
public String toString() {
// TODO Auto-generated method stub
return name+"-"+age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
TreeMap判断键唯一的方式与TreeSet一样
TreeMap需要:具有自然排序的能力,或者给指定定制比较器
下面是 指定定制比较器代码
public static void main(String[] args) {
//
Student stu1 = new Student("小明",10);
Student stu2 = new Student("小明",20);
Comparator<Object> aa = new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
return 1;
}
};
TreeMap tm = new TreeMap(aa);
tm.put(stu1, 50);
tm.put(stu1, 50);
System.out.println(tm.size());
System.out.println(tm);
}
class Student{
int age;
String name;
public Student(String name,int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return name+"-"+age;
}
}
2,LinkedList和ArrayList问题
ArrayList底层使用时数组。LinkedList使用的是链表。
数组查询具有所有查询特定元素比较快。而插入和删除和修改比较慢(数组在内存中是一块连续的内存,如果插入或删除是需要移动内存)。
链表不要求内存是连续的,在当前元素中存放下一个或上一个元素的地址。查询时需要从头部开始,一个一个的找。所以查询效率低。插入时不需要移动内存,只需改变引用指向即可。所以插入或者删除的效率高
ArrayList使用在查询比较多,但是插入和删除比较少的情况,而LinkedList使用在查询比较少而插入和删除比较多的情况。
但是:
实际情况在数据少时linklist比较快,而数据多是arraylist要快的多。
3,
相关推荐
一些java基础的东西,有时候面试会问到,里面涵盖了数据类型,操作符等一些java基础的东西,有时候面试会问到,里面涵盖了数据类型,操作符等一些java基础的东西,有时候面试会问到,里面涵盖了数据类型,操作符等
接口与抽象类的区别java基础一些东西,这些东西在面试中是常考的。大家可以看看
java基础 在命令行 控制台下的dos命令: 切换盘符 d: 进入某个目录 cd: 查看一个目录下有什么东西:dir 编译时 javac 源文件名 java 运行的时候 java 含有main方法的 类名 注意:不要写 class 公有的 public 的类 其...
java基础入门教程+android必备基础,总结的很不错的东西.pdf
题目大多是很基础的东西,对于复习JAVA基础知识很有帮助!
广州腾科java基础,里面有很多java基础的东西,初学者可以看看!
java基础入门课件、简单明了、没有多余的东西、都是精华
这是一份作者话费很大精力,一点点在学习中总结出来的东西,希望能给更多java基础学习的人带来帮助,也给需要对所学java基础部分知识进行总结的同学以帮助!
针对Android的Java基础学习,针对很多东西进行了解析,相当好的东西,值得参考!希望对你有用!
java基础入门的东西,一点简单的实现。 1.商店中,进货(列出能够进货的食品,选择进货的食品,确定进货的数量),进货结束后,列出进货的食品清单 2.商店中,顾客来购买食品(列出能够购买的食品,顾客选择购买的...
java基础加强版 ,更人性的巩固基础,万丈高楼平地起,只有打好基础,才能理解更复杂的东西
java基础(最简单 的东西)
Java 语言的一些最基础的东西.可以用作复习等.
java基础大纲,复习的好东西,很全面的知识框架图
适合入门学习java基础知识,不过基础的东西最重要啦
Java语言基础教程,深入浅出很值得初学者学习的东西
java继承与接口 前两天写东西,本来想把定义和实现分开来写的。类A有两个方法f1和f2,想把类A的定义、f1的实现和f2的实现分为三个java文件来写,看了看抽象类和接口。不过貌似都不是搞这个的样子。(求方法) 总结...
一个JAVA的基础知识的总结性文档!从JAVA最基础的东西开始讲起,一直总结到了反射,很经典的总结啊!
该资源主要是corejava中一些重要的知识点,都是java的基础,把java学好,这些知识的必须得熟练掌握的,是学习后面相关java开发技术的垫脚石,这些学好了后面的就容易了。希望这写东西能帮助到你!
java中的一些基本概念,都是一些很基础的东西,比较适合初学者,第一课让我们对java有一个感性上的认识