/*介绍集合之前先看一看迭代器:
简化对集合的操作,主要功能是遍历并选择集合中的对象,其中有三个最要的方法:
1.hasNext() 返回布尔值 看集合中还有没有元素
2.next() 返回下一个元素 返回的是O的所一定要强转一下
3.remove() 元素删除
接口 Iterator:
构建一个Iterator迭代器 -->Iterator iterator=所要进行迭代的集合对象.iterator();
接口 Enumeration: 注意=====Enumeration已经不是主流,Iterator是它的下一代替代品
构建一个Enumeration迭代器-->Enumeration enumeration=所要进行迭代的集合对象.elements()
*/
// ArrayList: 允许包括 null 在内的所有元素,此类是线程不同步的
public
static
void
method1
()
throws
Exception
{
ArrayList
arraylist
=
new
ArrayList
();
arraylist
.
add
(
0
,
"end"
);
//指定索引加入值,需注意的是,如果现有2个值,我加入索引为5的那么就会出现异常,即不能越位
for
(
int
i
=
0
;
i
<
2
;
i
++){
arraylist
.
add
(
i
,
String
.
valueOf
(
i
));
//将指定元素加入指定位置
}
System
.
out
.
println
(
"ArrayList:"
);
for
(
int
i
=
0
;
i
<
2
;
i
++){
System
.
out
.
print
(
arraylist
.
get
(
i
)+
";"
);
//get(int i)取出指定位置的元素
}
arraylist
.
add
(
"0"
);
//直接加入值到ArrayList的最后
arraylist
.
add
(
"0"
);
// arraylist.lastIndexOf("0") 返回指定的对象在列表中最后一次出现的位置索引
System
.
out
.
print
(
"\nArrayList\'s lastIndexOf(\"0\") is "
+
arraylist
.
lastIndexOf
(
"0"
));
}
// Collections: 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成
public
static
void
method2
()
{
String
[]
array
=
new
String
[]{
"a"
,
"b"
,
"c"
};
List
list
=
Arrays
.
asList
(
array
);
// aslist(Object []) 通过一个已有数组,构造一个List对象
Collections
.
fill
(
list
,
"Fill"
);
//用Fill填充全部元素 使用指定元素替换指定列表中的所有元素。
System
.
out
.
println
(
"\nCollections:"
);
for
(
int
i
=
0
;
i
<
2
;
i
++){
System
.
out
.
print
(
list
.
get
(
i
)+
";"
);
}
array
=
new
String
[]{
"1"
,
"2"
,
"3"
};
List
list2
=
Arrays
.
asList
(
array
);
Collections
.
copy
(
list
,
list2
);
//拷贝list2的数据进list
System
.
out
.
println
(
"\n"
+
list
);
Collections
.
swap
(
list
,
2
,
1
);
//调换索引为1和2的元素的位置 在指定列表的指定位置处交换元素
System
.
out
.
println
(
list
);
}
// HashMap 一个速度最快的容器,此类不保证映射的顺序,特别是它不保证该顺序恒久不变,不是线程同步
public
static
void
method3
()
{
HashMap
hashmap
=
new
HashMap
();
hashmap
.
put
(
"0"
,
"c"
);
//存放对象用put方法 记住所存的一定是键值对
hashmap
.
put
(
"1"
,
"a"
);
hashmap
.
put
(
"2"
,
"b"
);
hashmap
.
put
(
"3"
,
"a"
);
System
.
out
.
println
(
"HashMap:"
);
System
.
out
.
println
(
hashmap
);
//该容器有其内部的排序方式 事实上是依据哈希算法来排的
Set
set
=
hashmap
.
keySet
();
//获取全部键 它的返回类型是set
Iterator
iterator
=
set
.
iterator
();
while
(
iterator
.
hasNext
()){
System
.
out
.
print
(
hashmap
.
get
(
iterator
.
next
())+
";"
);
}
}
// HashSet 不保证集合的迭代顺序
public
static
void
method4
()
{
HashSet
hashset
=
new
HashSet
();
//一个绝对不能重复的类型 如果有遇到存重复的值不会报异常,只是add()会返一个boolean型的 false,当然肯定是不会把该元素加入集合 中的,它同样有size(),isEmpty(),remove()等方法。
hashset
.
add
(
"c"
);
hashset
.
add
(
"b"
);
hashset
.
add
(
"a"
);
hashset
.
add
(
"a"
);
hashset
.
add
(
"b"
);
System
.
out
.
println
(
"\nHashSet:"
);
System
.
out
.
println
(
hashset
);
Iterator
iterator
=
hashset
.
iterator
();
//取出元素
while
(
iterator
.
hasNext
()){
System
.
out
.
print
(
iterator
.
next
()+
";"
);
}
}
//Hashtable 任何非 null 对象都可以用作键或值,现在用得不多啦,一个完全可以由其他容器替换的老容器类型
public
static
void
method5
()
{
Hashtable
hashtable
=
new
Hashtable
();
hashtable
.
put
(
"0"
,
"c"
);
hashtable
.
put
(
"1"
,
"a"
);
hashtable
.
put
(
"3"
,
"c"
);
hashtable
.
put
(
"2"
,
"b"
);
System
.
out
.
println
(
"\nHashtable:"
);
//注意与之对应的迭代器是Enumeration,而不是Iterator
Enumeration
enumeration
=
hashtable
.
elements
();
//获取元素,Enumeration已经不是主流,Iterator是它的下一代替代品
while
(
enumeration
.
hasMoreElements
()){
System
.
out
.
println
(
enumeration
.
nextElement
()+
";"
);
}
}
//TreeMap
public
static
void
method6
()
{
TreeMap
treemap
=
new
TreeMap
();
treemap
.
put
(
"0"
,
"d"
);
//指定键值,如果映射以前包含一个此键的映射关系,那么将替换原值
treemap
.
put
(
"2"
,
"a"
);
treemap
.
put
(
"1"
,
"b"
);
treemap
.
put
(
"3"
,
"c"
);
System
.
out
.
println
(
"\nTreeMap:"
);
//可以对键排序
System
.
out
.
println
(
treemap
);
System
.
out
.
println
(
treemap
.
firstKey
());
//返回第一个键
Set
set
=
treemap
.
keySet
();
Iterator
iterator
=
set
.
iterator
();
while
(
iterator
.
hasNext
()){
System
.
out
.
print
(
treemap
.
get
(
iterator
.
next
())+
";"
);
}
}
//TreeSet
public
static
void
method7
()
{
TreeSet
treeset
=
new
TreeSet
();
//自动排序内容
treeset
.
add
(
"b"
);
treeset
.
add
(
"a"
);
treeset
.
add
(
"c"
);
treeset
.
add
(
"d"
);
System
.
out
.
println
(
"\nTreeSet:"
);
System
.
out
.
println
(
treeset
);
System
.
out
.
println
(
treeset
.
first
());
//返回第一个元素
Iterator
iterator
=
treeset
.
iterator
();
while
(
iterator
.
hasNext
()){
System
.
out
.
print
(
iterator
.
next
()+
";"
);
}
}
//Vector 一个最早的容器类,实现方式最老,同是它是线程同步的的,所以效率最慢,先进先出
public
static
void
method8
()
{
Vector
vector
=
new
Vector
();
vector
.
add
(
0
,
"b"
);
//在指定位置加入指定元素
vector
.
add
(
"a"
);
//加到最后
vector
.
addElement
(
"d"
);
//加到最后,将其集合的大小加1
vector
.
add
(
"c"
);
System
.
out
.
println
(
"\nVector:"
);
System
.
out
.
println
(
vector
);
vector
.
set
(
2
,
"h"
);
//替换掉指定索引的元素
System
.
out
.
println
(
vector
);
Object
[]
str
=
vector
.
toArray
();
//将集合中的元素拷到一个数组中,注间因为集合中存的是对象,所以数组必须是Object类型
for
(
int
i
=
0
;
i
<
2
;
i
++){
System
.
out
.
print
(
str
[
i
]+
";"
);
}
vector
.
setSize
(
2
);
//重新设置大小为2
System
.
out
.
println
(
"\n"
+
vector
);
}