黑马程序员技术交流社区
标题:
【石家庄】学习总结
[打印本页]
作者:
老成
时间:
2019-5-7 17:15
标题:
【石家庄】学习总结
本帖最后由 老成 于 2019-5-7 17:27 编辑
集合
一、Collection
是单列集合的顶层接口,它表示一组对象,这些对象也称为Collection元素
Collection集合的常用方法
boolean add(E e) 向集合中添加元素
boolean remove(E e) 将元素从集合中删除
void clear() 清空集合所有的元素
boolean contains(E e) 判断集合中是否包含指定的元素
boolean isEmpty() 判断集合是否为空
int size() 获取集合的长度
Collection集合遍历
Iterator<E> iterator() 返回此集合中元素的迭代器
public class
Test {
public static void
main
(String[] args) {
Student s1 =
new
Student(
"
蔡徐坤
"
,
25
)
;
Student s2 =
new
Student(
"
成龙
"
,
52
)
;
Student s3 =
new
Student(
"
范冰冰
"
,
20
)
;
Collection<Student> col =
new
ArrayList<>()
;
col.add(s1)
;
col.add(s2)
;
col.add(s3)
;
Iterator<Student> it = col.iterator()
;
while
(it.hasNext()){
Student s = it.next()
;
System.
out
.println(s.getName()+
","
+s.getAge())
;
}
for
(
int
i =
0
;
i < col.size()
;
i++) {
Student s = ((ArrayList<Student>) col).get(i)
;
System.
out
.println(s.getName()+
","
+s.getAge())
;
}
}
}
1.1、List是有带有索引的单类集合接口
List集合特有的方法
void add(int index,E e) 向集合中指定索引位置添加元素
E remove(int index) 删除指定索引处的元素并返回
E set(int index,E e) 修改指定索引处的元素,返回被修改的元素
E get(int index) 获取指定索引处的元素
List集合遍历
listIterator
() 索引遍历 增强for循环
List的两个实现类:
ArrayList底层是数组,查找快,增删慢
LinkedList底层是链表,查找慢,增删快
1.2、Set是不带索引的,不可存储重复元素的单列集合接口
HashCode值的概念:是JDK根据对象的地址或字符串或数字计算出来的一串int类型的数值,哈希值不同,一定不是同一对象,哈希值相同,不确定。
hashSet集合存储元素不可重复原因分析(分析源码):
先判断哈希值,哈希值不同直接存储
哈希值相同再判断节点是否为空,为空直接存储
不为空,equals判断链表中是否有相同内容,没有存储
有不存储
哈希表数据结构:数组+链表
LinkedHashSet 以输入顺序存储数据
TreeSet 按照构造方法决定存储顺序
TreeSet():根据元素的自然顺序进行排序
TreeSet(Comparator c):根据指定的比较器进行排序
TreeSet遍历:TreeSet集合没有索引。只能通过迭代器、增强for循环进行遍历
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2