JAVA--------集合(一)
来源:互联网 发布:好运通超市软件 编辑:程序博客网 时间:2024/05/18 13:42
JAVA--------集合(一)
像我么懒得人竟然想起来做笔记,真是不可思议中的不可思议。哎!实在是今天不知道该干些什么好。对于我来说给别人讲东西,或者花大量时间来做笔记之类的收获都是及其少的或者压根就没有收获。我更加喜欢的是听别人讲或者自己看。但是事实不断的告诉我,人是健忘的,做笔记写博客也是必要的。好了,不扯淡的直接进入主题。
一、集合的接口。
当我们需要用到集合的相关类时我们需要import java.util.*; JAVA给我们提供了一些集合的接口给我们使用,如Collection、Set、list,Map。这些接口都定义了很多对集合操作的方法的定义,但是没有具体实现。当然JAVA也给我们提供了一些它们的实现类,但是我们先不去看那些具体的实现类,先来看看这些接口的关系以及它们的特征。
现在我们可以看到Set与List两个接口都是继承自Collection,而Map却不是。它们都有着各是的实现类,这些类是可以直接使用的。当然了,还有其他的实现类,这里我们只给出这几个常用的实现类。
Set:实现Set接口的类有一个最大的特征,无序且不能重复。
List:实现List接口的类的特征是有序且可以重复。
二、常见的实现类
HashSet:底层是用Hash表实现的。里面保存的对象无序且不能重复。
LinkedList:底层是用链表来实现的,里面保存的对象有序且可以重复。
ArrayList:底层是用数组来实现的,里面保存的对象有序且可以重复。
我们先来看一个代码:
import java.util.*;
public class CollectionDemo {
public static void main(String[] args) {
Collection collection =new HashSet();//Set是一种无序的且不可以重复的容器
collection.add("hellow");
// collection.add("hellow");
collection.add(new String("world"));
collection.add(new Name("li","wenzhuo"));
// collection.add(new Name("li","wenzhuo"));
// collection.remove("hellow");
// collection.remove(new String("world"));
// collection.remove(new Name("li","wenzhuo"));
System.out.println(collection);
}
}
class Name{
private String firstName,lastName;
public Name(String mfirstName,String mlastName){
this.firstName=mfirstName;
this.lastName=mlastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String toString() {
return "Name [firstName=" + firstName + ", lastName=" + lastName + "]";
}
}
这里我们定义了一个内部类Name,保存firstName,lastName这两个变量。并提供了相应的get方法以及一个toString方法便于打印。
首先我们创建了HashSet对象。通过对象的add()方法往里面添加了三条数据, add方法接受的参数就是我们需要添加的对象。前两条是String类型的对象,最后添加的一条是我们自己定义的对象。
最后我们来看下打印的结果:
[world, Name [firstName=li, lastName=wenzhuo], hellow]
果然里面的数据并不是按照我们添加的顺序打印的,它是无序的。
public class CollectionDemo {
public static void main(String[] args) {
Collection collection =new HashSet();//Set是一种无序的且不可以重复的容器
collection.add("hellow");
collection.add(new String("world"));
collection.add(new Name("li","wenzhuo"));
collection.add(new Name("li","wenzhuo"));
// collection.remove("hellow");
// collection.remove(new String("world"));
// collection.remove(new Name("li","wenzhuo"));
System.out.println(collection);
}
}
class Name{
private String firstName,lastName;
public Name(String mfirstName,String mlastName){
this.firstName=mfirstName;
this.lastName=mlastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String toString() {
return "Name [firstName=" + firstName + ", lastName=" + lastName + "]";
}
}
其实在我们观察String类的内部,发现里面封装了两个方法equals方法和hashCode方法,我们重点理解equals方法,当我们将对象放入集合时,JAVA首先做的是将该对象和集合中的每一个对象做比较,判断两个对象是否equals,如果equals则两个对象相同,不放入,否则放入。而我们自己写的Name类却没有给出判断equals的方法,我们可以自己写该方法。这里我为了方便直接获取JAVA提供的。
代码如下:
import java.util.*;
public class CollectionDemo {
public static void main(String[] args) {
Collection collection =new HashSet();//Set是一种无序的且不可以重复的容器
collection.add("hellow");
collection.add("hellow");
collection.add(new String("world"));
collection.add(new Name("li","wenzhuo"));
collection.add(new Name("li","wenzhuo"));
// collection.remove("hellow");
// collection.remove(new String("world"));
// collection.remove(new Name("li","wenzhuo"));
System.out.println(collection);
}
}
class Name{
private String firstName,lastName;
public Name(String mfirstName,String mlastName){
this.firstName=mfirstName;
this.lastName=mlastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String toString() {
return "Name [firstName=" + firstName + ", lastName=" + lastName + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
result = prime * result + ((lastName == null) ? 0 : lastName.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;
Name other = (Name) obj;
if (firstName == null) {
if (other.firstName != null)
return false;
} else if (!firstName.equals(other.firstName))
return false;
if (lastName == null) {
if (other.lastName != null)
return false;
} else if (!lastName.equals(other.lastName))
return false;
return true;
}
}
- Java集合(一)
- JAVA集合(一)
- java(一)集合
- Java集合(一)
- -JAVA-集合(一)
- Java 集合(一)
- Java集合(一)
- JAVA--------集合(一)
- Java 集合(一)
- java集合(一)
- Java集合(一)---Java集合框架
- Java集合概述(一):Set集合
- Java集合简述(一)
- Java集合类型(一)
- java-集合类(一)
- Java集合总结(一)
- java集合框架(一)
- JAVA集合(一)概述
- 3.5动态添加菜单项
- 关于浏览器右键禁用事件,浏览器采用自己的右键事件。
- 【排序算法】九种排序算法的总结
- 数组中a和&a 的区别?
- 问题随记
- JAVA--------集合(一)
- sourceTree添加git密钥步骤
- Java——多线程
- ArrayList详解,源码解读
- 约数的个数
- windows server 2012 r2分区时创建为D盘时没有D盘符选择的解决方法
- UVA
- express初体验
- 浅析 JAVA虚拟机的栈与堆