集合:
- 长度是可变的
- 集合是一个存储诗句的容器,由于数据结构的不同,导致有很多集合的实现类
- 一些可以存储重复元素,一些不能;
- 可以存储任何类型的数据
- ArrayList: 内部维护着数组,可以随时扩充自己的大小,内存地址是连续的,查询速度快,但是相对删除,添加操作复杂
- LinkedList: 使用链表维护,查询速度慢,删除速度快
迭代器
String[] name = {"name1","name2","name3"};
List<String> names = Arrays.asList(name);
//List<String> namesList = Arrays.asList(name);
//List<String> names = new ArrayList<String>(namesList);
Iterator iterator = names.iterator();
//迭代器在迭代的时候,不能用集合去删除信息:集合的信息全都封装到iterator对象中
//要使用迭代器删除:iterator.remove()
//在使用增强for循环时,其内部也是使用的迭代器
while(iterator.hasNext()){
String n = (String)iterator.next();
if(n.equals("name2")){
iterator.remove();
}
}
names.forEach(System.out::println);
ArrayList
String[]
names
= {
"name1"
,
"name2"
,
"name3"
,
"name2"
,
"name3"
};
List<String>
nameList
= Arrays.
asList
(
names
);
List<String>
namesList
=
new
ArrayList<String>(
nameList
);
System.
out
.println(
"原List:"
+
namesList
);
System.
out
.println(
"------------------"
);
List<String>
newNamesList
=
distinct_list
(
namesList
)
;
System.
out
.println(
"去除重复后:"
+
newNamesList
);
System.
out
.println(
"retianAll()方法(返回是否操作成功):(获取两个集合的交集)"
+
namesList
.retainAll(
newNamesList
));
System.
out
.println(
"retainAll()方法结果集合内容:"
+
namesList
);
LinkedList
LinkedList
words
=
new
LinkedList<>(
nameList
);
System.
out
.println(
"element()方法:(检索第一个元素且不删除)"
+
words
.element());
System.
out
.println(
"lastIndexOf()方法:"
+
words
.lastIndexOf(
"name1"
));
去除集合中的重复元素
public
static
List
distinct_list(
List
list
){
List
temp
=
new
ArrayList<>();
Iterator
iterator
=
list
.iterator();
while
(
iterator
.hasNext()){
Object
object
=
iterator
.next();
if
(
temp
.contains(
object
)){
continue
;
}
temp
.add(
object
)
;
}
list
.clear();
list
.addAll(
temp
)
;
return
list
;
}