Collection总结
|- List 可以存储重复元素,有序的(元素存取顺序),有索引
|- ArrayList
|- LinkedList
|- Set 不能存储重复元素,无序的(元素存取顺序,LinkedHashSet是有序的),无索引
|- HashSet
|- LinkedHashSet
Collection方法:
boolean add(Object e) 把给定的对象添加到当前集合中
void clear() 清空集合中所有的元素
boolean remove(Object o) 把给定的对象在当前集合中删除
boolean contains(Object o) 判断当前集合中是否包含给定的对象
boolean isEmpty() 判断当前集合是否为空
Iterator iterator() 迭代器,用来遍历集合中的元素的
int size() 返回集合中元素的个数
Object[] toArray() 把集合中的元素,存储到数组中
Iterator : 迭代器
Object next()返回迭代的下一个元素
boolean hasNext()如果仍有元素可以迭代,则返回 true。
List与Set集合的区别?
List:
它是一个有序的集合(元素存与取的顺序相同)
它可以存储重复的元素
Set:
它是一个无序的集合(元素存与取的顺序可能不同)
它不能存储重复的元素
List集合中的特有方法(下标)
void add(int index, Object element) 将指定的元素,添加到该集合中的指定位置上
Object get(int index)返回集合中指定位置的元素。
Object remove(int index) 移除列表中指定位置的元素, 返回的是被移除的元素
Object set(int index, Object element)用指定元素替换集合中指定位置的元素,返回值的更新前的元素
ArrayList:
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
LinkedList:
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
泛型: 用来约束数据的数据类型
泛型的格式:
<数据类型>
泛型可以使用在 类,接口,方法上
泛型的好处
A:提高了程序的安全性
B:将运行期遇到的问题转移到了编译期
C:省去了类型强转的麻烦
增强for:在循环的过程中不能修改集合的长度
简化数组和Collection集合的遍历
格式:
for(元素数据类型 变量 : 数组或者Collection集合) {
使用变量即可,该变量就是元素
}
好处:简化遍历(语法糖)
HashSet:
元素唯一不能重复
底层结构是 哈希表结构
元素的存与取的顺序不能保证一致
LinkedHashSet:
元素唯一不能重复
底层结构是 链表结构+哈希表结构
- 元素的存与取的顺序一致
如何保证元素的唯一的?
重写hashCode() 与 equals()方法
Map集合的遍历2种方式
Map<String,String> map =new HashMap<String,String>();
map.put(“a”, “A”);
map.put(“b”, “B”);
map.put(“c”, “C”);
map.put(“d”, “D”);
//1.keyset方法。
Set<String> set=map.keySet();
//1.1迭代器
Iterator<String> it=set.iterator();
while(it.hasNext())
{
String key=it.next();
String value=map.get(key);
System.out.println(key+"="+value);
}
//1.2增强for
for(String s:set)
System.out.println(s+"="+map.get(s));
//2.entryset
System.out.println("-------------");
Set<Map.Entry<String, String>> st =map.entrySet();
Iterator<Map.Entry<String, String>> it1 =st.iterator();
while(it1.hasNext())
{
Map.Entry<String, String> map1 =it1.next();
String key1=map1.getKey();
String value1=map1.getValue();
System.out.println(key1+"="+value1);
}