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基础 在命令行 控制台下的dos命令: 切换盘符 d: 进入某个目录 cd: 查看一个目录下有什么东西:dir 编译时 javac 源文件名 java 运行的时候 java 含有main方法的 类名 注意:不要写 class 公有的 public 的类 其...
至于"JavaWEB_PPT.rar",这可能是一个关于Java Web开发的PPT文件,涵盖了Servlet、JSP、过滤器、监听器等概念,这些都是构建Web应用的基础。 总的来说,这些资料覆盖了Java编程的核心概念,对于理解和实践Java编程...
java基础入门课件、简单明了、没有多余的东西、都是精华
- **特殊知识点**:接下来,作者提到描述一些特殊的东西,比如异常处理机制、多态性、接口和抽象类的区别与应用等。这些内容对于深入理解面向对象编程至关重要,也是面试中经常被提及的重点。 - **锦上添花知识点**...
java基础入门的东西,一点简单的实现。 1.商店中,进货(列出能够进货的食品,选择进货的食品,确定进货的数量),进货结束后,列出进货的食品清单 2.商店中,顾客来购买食品(列出能够购买的食品,顾客选择购买的...
java基础加强版 ,更人性的巩固基础,万丈高楼平地起,只有打好基础,才能理解更复杂的东西
java基础(最简单 的东西)
学习JDBC(Java Database Connectivity),理解如何连接数据库、执行SQL语句、处理结果集,是每个Java开发者的基础技能。 进一步,接触并发编程。Java提供了线程和同步机制,学习多线程编程,理解锁、同步块、...
2. **Java语法基础**:课程可能会讲解Java的基本语法,如数据类型(整型、浮点型、字符型和布尔型)、变量声明、常量、运算符以及流程控制语句(如if条件语句、switch语句、for循环和while循环)。 3. **类与对象**...
以下是一些Java必须知道的关键知识点: 1. **面向对象特性**: - **抽象**:抽象是忽略不重要的细节,专注于对象的主要功能。它分为过程抽象(如方法)和数据抽象(如类)。Java中的抽象类和接口是抽象的体现。 -...
【描述】:“不是好东西,要学习JAVA的必须学习,否则天打雷劈......”这句话虽然带有调侃意味,但它强调了Java基础的重要性。Java是一种广泛应用于企业级应用、移动开发(尤其是Android)和大数据处理的编程语言,...
本文将深入探讨Java泛型的基础概念及其应用场景,并通过具体的例子帮助读者更好地理解和掌握这一知识点。 #### 二、为什么使用泛型程序设计? 泛型程序设计意味着编写的代码可以被多种不同类型的对象所重用。使用...
java继承与接口 前两天写东西,本来想把定义和实现分开来写的。类A有两个方法f1和f2,想把类A的定义、f1的实现和f2的实现分为三个java文件来写,看了看抽象类和接口。不过貌似都不是搞这个的样子。(求方法) 总结...
对于熟悉Java的开发者来说,理解Python的基础概念并不困难,因为两者虽然有区别,但也存在一些相似之处。 首先,Python的语法结构与Java有很大的不同。Python强调代码的可读性,使用缩进来表示代码块,而Java则依赖...
该资源主要是corejava中一些重要的知识点,都是java的基础,把java学好,这些知识的必须得熟练掌握的,是学习后面相关java开发技术的垫脚石,这些学好了后面的就容易了。希望这写东西能帮助到你!
这系列书籍,非常适合有一定编程基础的人看,里面基本全是技术讲解,能帮助有编程基础的人迅速掌握Java技术!但是对初学者不怎么友好,因为讲得很深入,而且感觉全书都是重点,找不到真正重要的东西! 《Java从...
### JAVA基础知识问答大全 在《JAVA基础知识问答大全》这一文档中,主要涵盖了Java编程语言的基础概念、核心特性和实际应用中的常见问题解答。对于初学者来说,这份资料是一本宝贵的指南,它不仅能够帮助理解Java的...
Java是一种广泛应用于各种领域的编程语言,被誉为“好东西”是有其充分理由的。它由Sun Microsystems(现为Oracle Corporation的一部分)于1995年推出,设计初衷是为了解决C++在当时面临的复杂性和效率问题。Java的...