Java基础总结大全(2)

四、集合框架

1:String类:字符串(重点)

(1)多个字符组成的一个序列,叫字符串。

生活中很多数据的描述都采用的是字符串的。而且我们还会对其进行操作。

所以,java就提供了这样的一个类供我们使用。

(2)创建字符串对象

A:String():无参构造

**举例:

String s = new String();

s = "hello";

sop(s);

B:String(byte[] bys):传一个字节数组作为参数 *****

**举例

byte[] bys = {97,98,99,100,101};

String s = new String(bys);

sop(s);

C:String(byte[] bys,int index,int length):把字节数组的一部分转换成一个字符串 *****

**举例

byte[] bys = {97,98,99,100,101};

String s = new String(bys,1,2);

sop(s);

D:String(char[] chs):传一个字符数组作为参数 *****

**举例

char[] chs = {'a','b','c','d','e'};

String s = new String(chs);

sop(s);

E:String(char[] chs,int index,int length):把字符数组的一部分转换成一个字符串 *****

**举例

char[] chs = {'a','b','c','d','e'};

String s = new String(chs,1,2);

sop(s);

F:String(String str):把一个字符串传递过来作为参数

char[] chs = {'a','b','c','d','e'};

String ss = new String(s);

sop(ss);

G:直接把字符串常量赋值给字符串引用对象(最常用) *****

**举例

String s = "hello";

sop(s);

(3)面试题

A:请问String s = new String("hello");创建了几个对象。

两个。一个"hello"字符串对象,在方法区的常量池;一个s对象,在栈内存。

B:请写出下面的结果

String s1 = new String("abc");

Strign s2 = new String("abc");

String s3 = "abc";

String s4 = "abc";

sop(s1==s2); //false

sop(s1==s3); //false

sop(s3==s4); //true

C:字符串对象一旦被创建就不能被改变。

指的是字符串常量值不改变。

(4)字符串中各种功能的方法

A:判断

**** boolean equals(Object anObject):判断两个字符串的内容是否相同,复写了Object的方法

**** boolean equalsIgnoreCase(String anotherString):判断两个字符串的内容是否相同,

不区分大小写

**** boolean contains(String s):判断一个字符串中是否包含另一个字符串

注意:判断字符串是否包含特殊字符.直接表示为str.contains(".")

boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束

boolean startsWith(String suffix):测试此字符串是否以指定的前缀开始

boolean isEmpty():测试字符串是否为空

B:获取

***** int length():返回此字符串的长度

***** char charAt(int index):返回指定索引处的 char值

***** int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。

int indexOf(int ch, int fromIndex):返回在此字符串中第一次出现指定字符处的索引,

从指定的索引开始搜索。

int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引。

int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次

出现处的索引,从指定的索引开始。

*** int lastIndexOf(int ch):返回指定字符在此字符串中最后一次出现处的索引。

int lastIndexOf(int ch, int fromIndex)

返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。

int lastIndexOf(String str)

返回指定子字符串在此字符串中最右边出现处的索引。

int lastIndexOf(String str, int fromIndex)

返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。

***** String substring(int beginIndex) (注意:该方法substring的String是小写!!!)

返回一个新的字符串,它是此字符串的一个子字符串。

String substring(int beginIndex, int endIndex) (注意该方法的String是小写!!!)

返回一个新字符串,它是此字符串的一个子字符串,包含头不包含尾。

C:转换

***** byte[] getBytes():(很常用!)从字符串到字节数组的方法

void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

将字符从此字符串复制到目标字符数组。

***** char[] toCharArray():(很常用!)从字符串到字符数组的方法

**** static String copyValueOf(char[] data)

返回指定数组中表示该字符序列的 String。

static String copyValueOf(char[] data, int offset, int count)

返回指定数组中表示该字符序列的 String。

***** static String valueOf(数据类型):把该数据类型的数据转换成字符串。

*** String toLowerCase():把字符串转换成小写

String toUpperCase():把字符串转换成大写

*** 字符串的连接

String concat(String str):将指定字符串连接到此字符串的结尾。

D:替换

String replace(char oldChar, char newChar):用新字符替换旧字符(替换所有)

String replace(String target, String replacement):用新的子串换旧串

E:分割

String[] split(String regex):根据指定的字符串把一个字符串分割成一个字符串数组

F:

String trim():去除字符串的前后空格

G:

int compareTo(String anotherString)

按字典顺序比较两个字符串。

int compareToIgnoreCase(String str)

按字典顺序比较两个字符串,不考虑大小写。

(5)练习

1:模拟登录,给三次机会,并提示还有几次.

默认的用户名和密码为admin。 区分大小写。

自己从键盘输入用户名和密码。

2:给定一个字符串统计,统计大写字母,小写字母,数字出现的个数.

***注意:不包括特殊字符

从键盘输入一个不包含特殊字符的字符串(只有26个字母和0-9组成)。

3:给定一个字符串,把它变成首字母大写,其他字母小写的字符串.

从键盘输入一个字符串,全部26个字母组成的。

4:子串在整串中出现的次数。

也就是说:获取一个字符串中,指定的字串在该字符串中出现的次数.

例如:

"nbasdnbafllgnbahjnbakqqqqlnba" 在这个字符串中,多有个nba.

5:对字符串中字符进行自然顺序排序。

"basckd"-->"abcdks"

先留做思考内容:

6:两个字符串的最大相同子串。

两个字符串的最大相同子串。

比如:

"sadabcdfghjkl"

werabcdtyu"

2:StringBuffer

(1)字符串的缓冲区,是一个容器。

(2)它和String的区别

它是缓冲区可变长度的。

(3)构造方法

StringBuffer() 构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。

StringBuffer(int num) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。

StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

(4)常用方法

A:增加数据

**append :添加各种类型的数据

**insert : 在容器指定位置插入各种类型的数据。

B:删除数据

**deleteCharAt : 删除指定位置的字符

**delete 还可以用于清空StringBuffer的缓冲区

C:替换

**replace

D:获取

**charAt

E:长度和容量

**length() 元素的个数

**capacity 元素的理论值

F:获取元素的位置

**indexOf

**lastIndexOf

G:截取

**substring(int start)

**substring(int start,int end)

H:反转

**reverse

(5)字符串和StringBuffer的转换

String-->StringBuffer通过构造:

如:StringBuffer sb = new StringBuffer(String str)

StringBuffer--String通过toString方法

如:StringBuffer sb = new StringBuffer();

sb.toString();

3:StringBuilder

和StringBuffer的功能是一样的,但是有区别:

StringBuffer(JDK1.0)是线程安全的。

StringBuilder(JDK1.5)不保证线程安全。

一般来说,我们写的程序都是单线程的,所以,用StringBuilder,效率高。

JDK版本的升级原则:

A:提高效率

B:提高安全性

C:简化书写

4:基本数据类型的对象包装类

(1)为了更方便的操作每个基本数据类型,java对其提供了很多的属性和方法供我们使用。

(2)用途:

**将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能操作该数据。

**常用的操作之一:用于基本数据类型与字符串之间的转换。

A:方便操作

B:用于和字符串进行相互转换

(3)基本数据类型和对象类型的对应

byte Byte

short Short

int Integer

long Long

float Float

double Double

boolean Boolean

char Character

(4)构造方法

字段摘要:

static int MAX_VALUE 值为 2^31-1 的常量,它表示 int 类型能够表示的最大值

static int MIN_VALUE 值为 -2^31 的常量,它表示 int 类型能够表示的最小值

static Class<Integer> TYPE 表示基本类型int的Class 实例

Integer(int value) 构造一个新分配的Integer对象,它表示指定的int值。

Inreger(String s) 注意:s必须是纯数字的字符串。否则会有异常NumberFormatException

(5)几个常用的方法

Integer.toBinaryString();

以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。

Integer.toOctalString();

以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。

Integer.toHexString();

以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。

static int Integer.parseInt(String s) 将字符串参数作为有符号的十进制整数进行解析,

字符串必须是int型范围内的数字字符串

static int Integer.parseInt(String s,int basic)

使用第二个参数指定的基数,将字符串参数解析为有符号的整数.

字符串必须是int型范围内的数字字符串

short shortValue() 以short类型返回该Integer的值。

int intValue() 以int类型返回该Integer的值。

static Integer valueOf(int num) 返回一个表示指定的 int 值的 Integer 实例。

static Integer valueOf(String s) 返回保存指定的String的值的Integer对象。

static Integer valueOf(String s, int radix)

返回一个Integer对象,该对象中保存了用第二个参数提供的基数进行

解析时从指定的String中提取的值。

(6)类型转换

int -- Integer

int num = 20;

A:Integer i = new Integer(num);

B:Integer i = Integer.valueOf(num);

Integer -- int

Integer i = new Integer(20);

A:int num = i.intValue();

int -- String

int num = 20;

A:String s = String.valueOf(num);

B:String s = ""+num;

C:String s = Integer.toString(num);

String -- int

String s = "20";

A:int num = Integer.parseInt(s);

B:Integer i = new Integer(s);或者Integer i = Integer.valueOf(s);

int num = i.intValue();

6、集合框架:

(1)为什么出现集合类?

面向对象对事物的体现都是以对象的形式,为了方便对多个对象的操作,就对对象进行存储。

集合就是存储对象最常用的一种方式.

(2)数组和集合都是容器,两者有何不同?

**数组长度固定,而集合长度是可变的

**数组值可以存储对象,还可以存储基本数据类型;而集合只能存储对象

**数组存储数据类型是固定的,而集合存储的数据类型不固定

(3)集合类的特点:

集合只能存储对象

集合的长度是可变的

集合可以存储不同类型的对象

(4)集合类框架(重要!!!要分清几种容器间的区别):

**Collection:顶层接口

|--->List:列表,元素是有序的(元素带角标索引),可以有重复元素,可以有null元素。

|--->ArrayList(JDK1.2):底层的数据结构是数组数据结构,特点是查询速度快(因为带角标),

但是增删速度稍慢,因为当元素多时,增删一个元素则所有元素的角标都得改变

线程不同步。默认长度是10,当超过长度时,按50%延长集合长度。

|--->LinkedList(JDK1.2):底层数据结构式链表数据结构(即后面一个元素记录前一个),

特点:查询速度慢,因为每个元素只知道前面一个元素,但增删速度快

因为元素再多,增删一个,只要让其前后的元素重新相连即可

线程是不同步的。

|--->Vector(JDK1.0):底层数据结构是数组数据结构.特点是查询和增删速度都很慢。

默认长度是10,当超过长度时,按100%延长集合长度。

线程同步。

(Vector功能跟ArrayList功能一模一样,已被ArrayList替代)

**List使用注意!

|--->ArrayList:

(1)当往ArrayList里面存入元素没什么要求时,即只要求有序就行时;

(2)当往ArrayList里面存入元素要求不重复时,比如存入学生对象,当同名同姓时

视为同一个人,则不往里面存储。则定义学生对象时,需复写equals方法

public boolean equals(Object obj)

{

if(!(obj instanceof Student))

return false;

Student stu = (Student)obj;

return this.name.equals(stu.name)&&this.age==stu.age;

}

则往ArrayList集合通过add存入学生对象时,集合底层自己会调用学生类的equals方法,

判断重复学生则不存入。

注:对于List集合,无论是add、contains、还是remove方法,判断元素是否相同,

都是通过复写equals方法来判断!

|--->LinkedList

(1)LinkLedist的特有方法:

boolean offerFirst(E e) 在此列表的开头插入指定的元素。

boolean offerLast(E e) 在此列表末尾插入指定的元素。

E peekFirst() 获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。

E peekLast() 获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。

E pollFirst() 获取并移除此列表的第一个元素;如果此列表为空,则返回 null。

E pollLast() 获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。

(2)通过LinkLedist的特有方法,可以实现某些数据特殊方式的存取,比如堆栈和队列。

一般情况下,使用哪种List接口下的实现类呢?

如果要求增删快,考虑使用LinkedList

如果要求查询快,考虑使用ArrayList

如果要求线程安全,考虑使用Vector。

|--->Set:集合,元素是无序的(因为没有索引),元素不可以重复。可以有null元素。

|--->HashSet(JDK1.2):底层数据结构是哈希表、存取速度快、元素唯一、线程不同步。

保证性元素唯一的原理:

先判断元素的hashCode值是否相同,再判断两元素的equals方法是否为true

(往HashSet里面存的自定义元素要复写hashCode和equals方法,

以保证元素的唯一性!)

|--->TreeSet:底层数据结构式二叉树。可以对Set集合中的元素进行排序。元素有序、线程不同步。

保证元素唯一性的依据:compareTo方法return 0

TreeSet排序的第一种方式:让元素自身具备比较性,比如八种基本数据类型或则字符串,

实现Compareble接口,覆盖compareTo方法,

此方式是元素的自然顺序

TreeSet排序的第一种方式:当元素自身不具备比较性(比如存储学生对象时)或者具备的

比较性不是我们所需要的比较性时(比如想字符串的长度排序),

此时就需要让集合自身具备自定义的比较性。

那如何让集合自身具备比较性呢?可在集合初始化时,

就让集合具备比较方式。即定义一个类,

实现Comparator接口,覆盖compare方法。

**Set集合使用注意事项:

(1)HashSet:

通过new的方式往HashSet里面存的元素的hashCode都不同,但通常我们定义对象,

比如学生对象时,虽然是new的两个学生对象,但是当他们name和age一样时,我们认为是

同一个对象,所以为了保证元素的唯一性,我们通常在往HashSet集合里面存储元素时,

在定义对象的类中通常复写hashCode和equals方法。

public int hashCode()

{

return name.hashCode()+age*39;

}

public boolean equals(Object obj)

{

if(!(obj instanceof Student))

return false;

Student stu = (Student)obj;

return this.name.equals(stu.name)&&this.age==stu.age;

}

HashSet是如何保证元素唯一性的呢?

**如果两元素的hashCode值不同,则不会调用equals方法

**如果两元素的hashCode值相同,则继续判断equals是否返回true;

**hashCode和equals方法虽然定义在自定义对象类里面,但不是我们手动调用

而是往HashSet集合里面存储元素的时候,集合底层自己调用hashCode和equals

它自己拿对象去判断,自己判断两元素是否是同一个元素。

(2)TreeSet:

TreeSet要求往里面存的元素具备比较性,否则会报错。

TreeSet排序的第一种方式:让元素自身具备比较性

定义对象类,实现Compareble接口,复写compareTo方法,此方式是元素的自然顺序

class Student implements Comparable

{

private String name;

private int age;

public Student(String name,int age)

{

this.name=name;

this.age=age;

}

public String getName()

{

return name;

}

public int getAge()

{

return age;

}

public int compareTo(Object obj)

{

if(!(obj instanceof Student))

throw new RuntimeException("不是学生对象!");

Student stu = (Student)obj;

int num = this.age-stu.age;

if(num==0)

return this.name.compareTo(stu.name);

return num;

}

}

TreeSet排序的第一种方式:让集合具备比较性

当元素自身不具备比较性(比如存储学生对象时)或者具备的

比较性不是我们所需要的比较性时(比如想字符串的长度排序),

此时就需要让集合自身具备自定义的比较性。

那如何让集合自身具备比较性呢?可在集合初始化时,

就让集合具备比较方式。即定义一个类,

实现Comparator接口,覆盖compare方法。

class StringLengthComparator implements Comparator

{

public int compare(Object obj1,Object obj2)

{

String s1 = (String)obj1;

String s2 = (String)obj2;

int num = new Integer(s1.length()).compareTo(new Integer(s2.length()));

if(num==0)

return s1.compareTo(s2);

return num;

}

}

class TreeSetTest

{

public static void main(String[] args)

{

TreeSet ts = new TreeSet(new StringLengthComparator());

ts.add("addfg");

ts.add("dfg");

ts.add("agtuug");

ts.add("vgjkg");

sop(ts);

}

}

基本数据类型或字符串对象均实现了Comparable接口,故同种类型基本数据间具备比较性,即自然顺序。

**Map:顶层接口,该集合存储的是键值对,而且键是唯一的,Map和Set很像,Set集合底层就是使用了Map集合。

Map集合没有迭代器,要取出元素必须先将Map集合转换成Set集合才能遍历元素

|--->HashTable(JDK1.0):

底层是哈希表数据结构;

不可以使用null键和null值;

用作键的对象必须实现hashCode和equals方法来保证键的唯一性

线程同步,效率低

|--->HashMap(JDK1.2):

底层是哈希表数据结构;

允许使用null键和null值;

线程不同步,效率高;

保证元素唯一性的:

原理:先判断元素的hashCode值是否相同,再判断两元素的equals方法是否为true

(往HashSet里面存的自定义元素要复写hashCode和equals方法,

以保证元素的唯一性!)

class Student {

private String name;

private int age;

public Student(String name, int age) {

super();

this.name = name;

this.age = age;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public int hashCode(){

return name.hashCode()+age*34;

}

@Override

public boolean equals(Object obj){

if(!(obj instanceof Student))

return false;

Student stu = (Student)obj;

return this.name.equals(stu.name)&&this.age==stu.age;

}

public class HashMapDemo1 {

public static void main(String[] args) {

Map<Student , String> hmap = new HashMap<Student , String>();

hmap.put(new Student("001",20), "beijing");

hmap.put(new Student("002",25), "hebei");

hmap.put(new Student("003",50), "hainan");

hmap.put(new Student("001",20), "beijing");

System.out.println(hmap.size());

Set<Student> keySet = hmap.keySet();

Iterator<Student> it = keySet.iterator();

while(it.hasNext()){

Student stu = it.next();

String addr = hmap.get(stu);

System.out.println(stu.getName()+".."+stu.getAge()+"::"+addr);

}

}

}

|--->TreeMap(JDK1.0):

底层是二叉树结构;

允许使用null键和null值;

线程不同步;

可以给Map集合中的键进行排序.

TreeMap排序的第一种方式:让元素自身具备比较性,比如八种基本数据类型或则字符串,

实现Compareble接口,覆盖compareTo方法,

此方式是元素的自然顺序

TreeMap排序的第一种方式:当元素自身不具备比较性(比如存储学生对象时)或者具备的

比较性不是我们所需要的比较性时(比如想字符串的长度排序),

此时就需要让集合自身具备自定义的比较性。

那如何让集合自身具备比较性呢?可在集合初始化时,

就让集合具备比较方式。即定义一个类,

实现Comparator接口,覆盖compare方法。

class Student implements Comparable<Student>{

private String name;

private int age;

public Student(String name, int age) {

super();

this.name = name;

this.age = age;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public int compareTo(Student stu) {

int num = new Integer(this.age).compareTo(new Integer(stu.age));

if(num==0)

return this.name.compareTo(stu.name);

return num;

}

}

public class HashMapDemo1 {

public static void main(String[] args) {

Map<Student , String> tmap = new TreeMap<Student , String>();

tmap.put(new Student("001",20), "beijing");

tmap.put(new Student("002",25), "hebei");

tmap.put(new Student("003",50), "hainan");

tmap.put(new Student("001",20), "beijing");

System.out.println(tmap.size());

Set<Student> keySet1 = tmap.keySet();

Iterator<Student> it1 = keySet1.iterator();

while(it1.hasNext()){

Student stu = it1.next();

String addr = tmap.get(stu);

System.out.println(stu.getName()+".."+stu.getAge()+"::"+addr);

}

}

}

**Iterator:对collection进行迭代的迭代器.迭代器取代了Enumeration。

迭代器和枚举的区别:

迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的collection移除元素

方法名称得到了改进,简化书写

**LisIterator:系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表

**Comparable:此接口强行对实现它的每个类的对象进行整体自然排序。使元素具备比较性

**Comparator:强行对某个对象collection进行整体排序的比较函数,使集合具备比较性

**Collections:此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。

**Arrays:此类包含用来操作数组(比如排序和搜索)的各种静态方法

7、集合类各容器方法:

**接口Collection方法摘要(没有构造方法)

a)添加:

i. boolean add(E e)

j. boolean addAll(Collection c)

b)删除:

i. void clear():清空容器

j. boolean remove(Objec object):

k. boolean removeAll(Collection c):

c)判断:

i. boolean contains(Object object):判断是否包含此元素

j. boolean containsAll(Collection c):判断是否包含一堆元素

k. boolean equals(Object object):比较此collection与指定对象是否相等

m. boolean isEmpty():判断是否集合为空

d)获取:

h. Iterator iterator():取出

i. int hashCode():返回此collection的哈希值

j. int size():返回此collection中元素的个数

k. boolean retainAll(Collection c):取交集

m. Object toArray():返回此collection中所有元素的数组

n. T[] toArray(T[] a):返回包含此collection中所有元素的数值。

*****List集合子类及其方法

(1)List接口是Collection接口的一个子接口。

(2)List接口中的元素有如下特点(对角标的操作都是特有方法,因为有序):

A:元素有序(存储顺序和取出顺序一致)

B:元素可以重复

(3)List接口中的特有方法

A:add(int index,Object obj):在指定位置加入元素

B:remove(int index):移除指定位置的元素

C:set(int index,Object obj):修改指定位置的元素

D:get(int index):获取指定位置的元素

E:indexOf(Object obj):获取指定元素的位置

F:subList(int start,int end):从一个大的List中截取一个小的List

G:listIterator():返回一个List接口特有的迭代器

(1)、ArrayList:

|--->构造方法摘要:(少用,不是重点)

ArrayList():构造一个初始容量为 10 的空列表。

ArrayList(Collection<? extends E> c): 构造一个包含指定 collection 的元素的列表,

ArrayList(int initialCapacity): 构造一个具有指定初始容量的空列表。

|--->方法摘要:

|--->添加:

boolean add(E e): 将指定的元素添加到此列表的尾部。

void add(int index, E element): 将指定的元素插入此列表中的指定位置。

boolean addAll(Collection<? extends E> c):按照指定 collection 的迭代器所返回的元素顺序,

将该 collection 中的所有元素添加到此列表的尾部

boolean addAll(int index, Collection<? extends E> c): 从指定的位置开始,将指定 collection

中的所有元素插入到此列表中。

|--->删除:

void clear(): 移除此列表中的所有元素。

E remove(int index): 移除此列表中指定位置上的元素。

boolean remove(Object o): 移除此列表中首次出现的指定元素(如果存在)。

protected void removeRange(int fromIndex, int toIndex):

移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。

boolean removeAll(Collection<?> c): 从列表中移除指定 collection 中包含的其所有元素

|--->获取:

E get(int index): 返回此列表中指定位置上的元素。

int indexOf(Object o): 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。

int lastIndexOf(Object o) 返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1。

public List<E> subList(int fromIndex,int toIndex): 返回列表中指定的 fromIndex(包括 ) 和 toIndex(不包括)之间的部分视图。

Iterator<E> iterator(): 返回按适当顺序在列表的元素上进行迭代的迭代器。

ListIterator<E> listIterator(int index):返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。

|--->修改:(特有方法!!)

E set(int index, E element): 用指定的元素替代此列表中指定位置上的元素。

(2)LinkedList:

|--->构造方法摘要:

LinkedList(): 构造一个空列表。

LinkedList(Collection<? extends E> c): 构造一个包含指定 collection 中的元素的列表,

这些元素按其 collection 的迭代器返回的顺序排列。

|--->方法摘要:(特有的)

|--->添加

void addFirst(E e): 将指定元素插入此列表的开头。

void addLast(E e): 将指定元素添加到此列表的结尾。

|--->获取元素,但不删除元素

E get(int index): 返回此列表中指定位置处的元素。

E getFirst(): 返回此列表的第一个元素。

E getLast(): 返回此列表的最后一个元素。

|--->获取元素且删除元素

E remove(): 获取并移除此列表的头(第一个元素)。

E remove(int index): 移除此列表中指定位置处的元素。

boolean remove(Object o): 从此列表中移除首次出现的指定元素(如果存在)。

E removeFirst(): 移除并返回此列表的第一个元素。

E removeLast(): 移除并返回此列表的最后一个元素。

|--->修改

E set(int index, E element) 将此列表中指定位置的元素替换为指定的元素。

(3)Vector

|--->构造方法摘要:

Vector(): 构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。

Vector(Collection<? extends E> c): 构造一个包含指定 collection 中的元素的向量,

这些元素按其 collection 的迭代器返回元素的顺序排列。

|--->方法摘要:

|--->添加:

boolean add(E e): 将指定元素添加到此向量的末尾。

void add(int index, E element): 在此向量的指定位置插入指定的元素。

boolean addAll(Collection<? extends E> c):

将指定 Collection 中的所有元素添加到此向量的末尾,

按照指定 collection 的迭代器所返回的顺序添加这些元素。

boolean addAll(int index, Collection<? extends E> c): 在指定位置将指定 Collection 中的所有元素插入到此向量中。

|--->获取:

Enumeration<E> elements(): 返回此向量的组件的枚举。

Vector特有的取出方式:

枚举和迭代器很像,其实枚举和迭代器是一样的,只是因为枚举的名称和方法的名称

名字都过长,所以枚举被迭代器取代了。

|--->枚举Enumeration的方法摘要:

boolean hasMoreElements(): 测试此枚举是否包含更多的元素。

E nextElement(): 如果此枚举对象至少还有一个可提供的元素,

则返回此枚举的下一个元素。

*****Set集合子类及其方法

(1)HashSet:它不保证set的迭代顺序;特别是它不保证该顺序恒久不变.此类允许使用null元素。

|--->构造方法:

HashSet() 构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。

HashSet(Collection<? extends E> c) 构造一个包含指定 collection 中的元素的新 set。

|--->方法摘要:

boolean add(E e) 如果此 set 中尚未包含指定元素,则添加指定元素。

void clear() 从此 set 中移除所有元素。

Object clone() 返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。

boolean contains(Object o) 如果此 set 包含指定元素,则返回 true。

boolean isEmpty() 如果此 set 不包含任何元素,则返回 true。

Iterator<E> iterator() 返回对此 set 中元素进行迭代的迭代器。

boolean remove(Object o) 如果指定元素存在于此 set 中,则将其移除。

int size() 返回此 set 中的元素的数量(set 的容量)。

(2)TreeSet:使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序.

|--->构造方法:

TreeSet() 构造一个新的空 set,该set根据其元素的自然顺序进行排序。

TreeSet(Collection<? extends E> c)

构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。

TreeSet(Comparator<? super E> comparator) 构造一个新的空 TreeSet,它根据指定比较器进行排序。

|--->方法摘要:

添加:

boolean add(E e) 将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。

boolean addAll(Collection<? extends E> c) 将指定 collection 中的所有元素添加到此 set 中。

删除:

void clear() 移除此 set 中的所有元素。

boolean remove(Object o) 将指定的元素从 set 中移除(如果该元素存在于此 set 中)。

E pollFirst() 获取并移除第一个(最低)元素;如果此 set 为空,则返回 null。

E pollLast() 获取并移除最后一个(最高)元素;如果此 set 为空,则返回 null。

获取:

Iterator<E> iterator() 返回在此 set 中的元素上按升序进行迭代的迭代器。

E first() 返回此 set 中当前第一个(最低)元素。

E last() 返回此 set 中当前最后一个(最高)元素。

int size() 返回 set 中的元素数(set 的容量)。

判断:

boolean isEmpty() 如果此 set 不包含任何元素,则返回 true。

boolean contains(Object o) 如果此 set 包含指定的元素,则返回 true。

**Map:将键映射到值的对象。Map集合没有迭代器!Map集合特点:该集合存储键值对。而且键是唯一的。

|--->方法摘要:

|--->添加:

V put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)。

void putAll(Map<? extends K,? extends V> m) 从指定映射中将所有映射关系复制到此映射中

|--->删除:

void clear() 从此映射中移除所有映射关系(可选操作)。

V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。

|--->判断

boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。

boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。

boolean isEmpty() 如果此映射未包含键-值映射关系,则返回 true。

|--->获取

int size() 返回此映射中的键-值映射关系数。

Collection<V> values() 返回此映射中包含的值的 Collection 视图。

重点:Map集合没有迭代器,以下是Map的两种取出方式:

第一种:Set<K> keySet()

返回此映射中包含的键的Set视图,将Map集合中所有的键存入Set集合,然后再通过Set集合的

迭代器取出所有的键,再根据get方法获取每个键的值;

第二种:Set<Map.Entry<K,V>> entrySet()

返回此映射中包含的映射关系的Set视图,将Map集合中的映射关系存入到Set集合中,

这个映射关系的数据类型是Map.entry,再通过Map.Entry类的方法再要取出关系里面的键和值

Map.Entry的方法摘要:

boolean equals(Object o) 比较指定对象与此项的相等性。

K getKey() 返回与此项对应的键。

V getValue() 返回与此项对应的值。

int hashCode() 返回此映射项的哈希码值。

V setValue(V value) 用指定的值替换与此项对应的值(特有!!!)。

原文发布于微信公众号 - java学习(javaxxf)

原文发表时间:2017-09-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Bingo的深度学习杂货店

Q7 Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 1...

2964
来自专栏java学习

Java每日一练(2017/8/17)

每日一句 学的到东西的事情是锻炼,学不到的是磨练。 查看以前的所有练习题目以及答案:https://mp.weixin.qq.com/mp/homepage?_...

2929
来自专栏编程

Python基础1

数据类型 Python3中有6钟标准的数据类型:Number(数字)、String(字符 串)、List(列表)、Tuple(元组)、Sets(集合)、Dict...

23010
来自专栏和蔼的张星的图像处理专栏

76. 最长上升子序列动态规划+二分查找

给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能...

6321
来自专栏Duncan's Blog

四则运算表达式求值

1462
来自专栏十月梦想

Map数据结构以及方法和数据遍历

    前面说过Set和Map是ES6中的新的数据结构(不是数据类型是存储数据的集合结构),上面说过,Set类似与数据的形式而这个类似与object(对象),看...

3053
来自专栏深度学习与计算机视觉

算法-数字在排序数组中出现的次数

题目: 统计一个数字在排序数组中出现的次数,比如排序数组为{1,2,3,3,3,4,5},那么数字3出现的次数就是3。 解题思路: 1.首先,遍历数组肯...

2105
来自专栏精讲JAVA

Java知识点总结之Java泛型

1122
来自专栏LanceToBigData

JavaSE(八)之Collection总结

  前面几篇把集合中的知识大概都详细的说了一遍,但是我觉得还是要总结一下,这样的话,可以更好的理解集合。 一、Collection接口 首先我们要一张图来说明:...

2436
来自专栏desperate633

LintCode 二进制求和题目分析代码

743

扫码关注云+社区

领取腾讯云代金券