集合:
- 长度是可变的
- 集合是一个存储诗句的容器,由于数据结构的不同,导致有很多集合的实现类
- 一些可以存储重复元素,一些不能;
- 可以存储任何类型的数据
- 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;
}