中山网站建设策划方案,凡客诚品售后服务官方,wordpress 页面标签,上海市建设安全协会网站查询系统瘫List
元素存放有序#xff0c;元素可重复
1.LinkedList
链表#xff0c;插入删除#xff0c;非线性安全#xff0c;插入和删除操作是双向链表操作#xff0c;增加删除快#xff0c;查找慢
add(E e)//添加元素
addFirst(E e)//向集合头部添加元素
addList(E e)//向集合…List
元素存放有序元素可重复
1.LinkedList
链表插入删除非线性安全插入和删除操作是双向链表操作增加删除快查找慢
add(E e)//添加元素
addFirst(E e)//向集合头部添加元素
addList(E e)//向集合尾部添加元素
getLast() //获取集合最后一个元素
removeFirst()//移除集合中第一个元素
pop()//移除集合中第一个元素
removeLast()//移除集合中最后一个元素
clear() //清除列表
isEmpty()//判断集合是否为空2.ArrayList
数组随机访问非线性安全效率高增加删除慢查找快 添加
add(E e)
add(int index,E e)//指定位置添加set(int index,E e)//替换某个有毒返回被替换的因素ListString list new ArrayList();//多态写法
list.add(1);
list.add(2);
list.add(3);
System.out.println(list);
//替换某个元素并返回被替换的元素
String a list.set(1, A);
System.out.println(被替换的元素为 a);
System.out.println(list);打印结果
[1, 2, 3]
被替换的元素为2
[1, A, 3]
//迭代遍历
IteratorString iterator list.iterator();
while (iterator.hasNext()) {System.out.println(iterator.next());
}
删除
remove(int index)//移除指定索引元素
remove(Object o)
//建议采用遍历器进行删除
IteratorString iter aList.iterator(); while(iter.hasNext()){ if(iter.next().equals(abc)){ iter.remove(); } 3.Vector
数组线程安全效率低支持添加移除替换允许null的因素存在。
Set
元素存放无序存放元素和取出的顺序可能不一样元素不重复但是对象需要重写hasCode和equals进行去重没有索引所以不能使用普通for循环遍历
1.HashSet
不安特定方式排列没有重复元素会对添加的元素进行去重采用哈希算法来存取集合元素存取速度比较快。
add(E e)//添加元素自动去重SetInteger set new HashSet();
set.add(1);
set.add(2);
set.add(2);
//使用功能迭代器遍历不能使用普通for遍历
IteratorInteger iterator set.iterator();
while (iterator.hasNext()){System.out.println(iterator.next());
}
打印结果
1
2如果是HashSet存储自定义类型的元素比如bean对象需要重写hasCode和equals进行去重 public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name name;this.age age;}Overridepublic String toString() {return Person{ name name \ , age age };}Overridepublic boolean equals(Object o) {if (this o) return true;if (o null || getClass() ! o.getClass()) return false;Person person (Person) o;return age person.age Objects.equals(name, person.name);}Overridepublic int hashCode() {return Objects.hash(name, age);}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}
}//创建HashSet集合存储PersonHashSetPerson people new HashSet();Person person1 new Person(aa, 15);Person person2 new Person(ww,16);Person person3 new Person(ww,16);people.add(person1);people.add(person2);people.add(person3);System.out.println(people);输出[Person{nameaa, age15}, Person{nameww, age16}]
2.LinkedHashSet
具有HashSet的查询速度底层是一个哈希表数组链表/红黑树链表多了一条链表记录元素存储顺序 存储数据的方式和HashSet一样包括去重的方式唯一的不一样点就是LinkedHashSet内部是有序的
Map
元素按键值对存储无序 key和value一一对应关系 key和value的数据类型可以相同也可以不同 key不允许重复value可以重复
1.HashMap
非线程安全无序支持存储键值均为null没有contains方法改成containsValue和containsKey内存初始大小16
2.LinkedHashMap
有序支持存储键值均为null
HashTable
线程安全存储键值不能为null,有contains方法内存初始大小11