概要:
List中可以添加任何对象,包括自己定义的新的类。
List的常用实现类有:ArrayList和LinkedList。
1用法
ArrayList
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public
static
void
main(String[] args) {
// ArrayList类实现一个可增长的动态数组
List<String> list =
new
ArrayList<String>();
// 插入元素
list.add(
"list1"
);
list.add(
"list2"
);
// 打印list的大小
System.out.println(list.size());
// 按索引移除元素
list.remove(
0
);
// 按对象移除元素
list.remove(
"list2"
);
// 打印list的大小
System.out.println(list.size());
// 清空list
list.clear();
}
|
LinkedList
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public
static
void
main(String[] args) {
// LinkedList类实现了链表,可初始化化为空或者已存在的集合
LinkedList<String> list =
new
LinkedList<String>();
// 插入元素
list.add(
"list2"
);
list.add(
"list3"
);
// 向链表头插入数据
list.addFirst(
"list1"
);
// 向链表尾插入数据
list.addLast(
"list4"
);
for
(String str : list) {
System.out.println(str);
}
// 获取链表头数据
System.out.println(
"链表头数据:"
+ list.getFirst());
// 获取链表尾数据
System.out.println(
"链表尾数据:"
+ list.getLast());
}
|
2排序
数字排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public
static
void
main(String[] args) {
// 创建list
List<Integer> list =
new
ArrayList<Integer>();
// 插入元素
list.add(
2
);
list.add(
0
);
list.add(
3
);
list.add(
4
);
list.add(
1
);
Collections.sort(list);
for
(
int
i : list) {
System.out.println(i);
}
}
|
中文排序
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public
static
void
main(String[] args) {
ArrayList<String> list =
new
ArrayList<String>();
list.add(
"一鸣惊人-Y"
);
list.add(
"人山人海-R"
);
list.add(
"海阔天空-H"
);
list.add(
"空前绝后-K"
);
list.add(
"后来居上-H"
);
Comparator<Object> cmp = Collator.getInstance(java.util.Locale.CHINA);
Collections.sort(list, cmp);
for
(String str : list) {
System.out.println(str);
}
}
|
实体类排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
package
net.xsoftlab.baike;
import
java.util.ArrayList;
import
java.util.Collections;
import
java.util.Comparator;
import
java.util.List;
public
class
TextList {
public
static
void
main(String[] args) {
List<User> userlist =
new
ArrayList<User>();
userlist.add(
new
User(
"Y - 易小星 "
,
33
));
userlist.add(
new
User(
"W - 王大锤"
,
33
));
Comparator<User> cmp =
new
ComparatorUser();
Collections.sort(userlist, cmp);
for
(User user : userlist) {
System.out.println(user.getName());
}
}
}
class
ComparatorUser
implements
Comparator<User> {
@Override
public
int
compare(User u1, User u2) {
// 先按年龄排序
int
flag = u1.getAge().compareTo(u2.getAge());
// 年龄相等比较姓名
if
(flag ==
0
) {
return
u1.getName().compareTo(u2.getName());
}
else
{
return
flag;
}
}
}
class
User {
private
String name;
private
Integer age;
public
User() {
super
();
}
public
User(String name, Integer age) {
super
();
this
.name = name;
this
.age = age;
}
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
Integer getAge() {
return
age;
}
public
void
setAge(Integer age) {
this
.age = age;
}
}
|
3遍历
三种遍历方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public
static
void
main(String[] args) {
List<String> list =
new
ArrayList<String>();
// 插入元素
list.add(
"list1"
);
list.add(
"list2"
);
list.add(
"list3"
);
System.out.println(
"第一种遍历方法 - >"
);
for
(String str : list) {
System.out.println(str);
}
System.out.println(
"第二种遍历方法 - >"
);
for
(
int
i =
0
; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println(
"第三种遍历方法 - >"
);
Iterator<String> iter = list.iterator();
while
(iter.hasNext()) {
System.out.println(iter.next());
}
}
|
遍历时移除元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
package
net.xsoftlab.baike;
import
java.util.ArrayList;
import
java.util.Iterator;
import
java.util.List;
public
class
RemoveItemFromList {
public
static
void
main(String[] args) {
List<String> list =
new
ArrayList<String>();
// 插入元素
list.add(
"list1"
);
list.add(
"list2"
);
list.add(
"list2"
);
list.add(
"list3"
);
// 实例化新的list防止因传递地址而达不到测试效果。
remove1(
new
ArrayList<String>(list));
remove2(
new
ArrayList<String>(list));
remove2_1(
new
ArrayList<String>(list));
remove3(
new
ArrayList<String>(list));
}
public
static
void
remove1(List<String> list) {
System.out.print(
"第一种方法 - > "
);
try
{
for
(String str : list) {
if
(str.equals(
"list2"
))
list.remove(str);
}
}
catch
(Exception e) {
System.out.println(
"移除失败!"
);
}
}
public
static
void
remove2(List<String> list) {
System.out.print(
"第二种方法 - > "
);
for
(
int
i =
0
; i < list.size(); i++) {
String str = list.get(i);
if
(str.equals(
"list2"
))
list.remove(str);
}
System.out.println(list);
System.out.println(
"也有异常,可以用下面的方法避免。"
);
}
public
static
void
remove2_1(List<String> list) {
System.out.print(
"第二种方法修正 - > "
);
for
(
int
i =
0
; i < list.size(); i++) {
String str = list.get(i);
if
(str.equals(
"list2"
)) {
list.remove(str);
// 因移除了元素,位置发生偏移,需要重新对当前位置的元素进行判断。
i--;
}
}
System.out.println(list);
}
public
static
void
remove3(List<String> list) {
System.out.print(
"第三种方法 - > "
);
Iterator<String> iter = list.iterator();
while
(iter.hasNext()) {
String str = iter.next();
if
(str.equals(
"list2"
))
iter.remove();
}
System.out.println(list);
}
}
|