6.17(集合框架-->ArrayList)
感觉CSDN博客很“饱和”了,我想发的大佬们可能十年前就发过一摸一样的了,害,得找一个不那么“饱和"的平台
集合的脑图:
ArrayList和HashSet的区别
1.ArrayList:有顺序
HashSet:无顺序
2.List中的数据可以重复
Set中的数据不能够重复
ArrayList 和LinkedList的区别
1.ArrayList 插入,删除数据慢
LinkedList, 插入,删除数据快
2.ArrayList是顺序结构,所以定位很快,指哪找哪。 就像电影院位置一样,有了电影票,一下就找到位置了。
LinkedList 是链表结构,就像手里的一串佛珠,要找出第99个佛珠,必须得一个一个的数过去,所以定位慢
HashMap和Hashtable的区别
1.HashMap可以存放 null
Hashtable不能存放null
2.HashMap不是线程安全的类
Hashtable是线程安全的类
HashSet LinkedHashSet TreeSet
HashSet: 无序
LinkedHashSet: 按照插入顺序
TreeSet: 从小到大排序
用聚合操作,可以非常容易地遍历,筛选,比较集合中的元素,要用la’m’bda表达式
package lambda;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
import charactor.Hero;
public class TestAggregate {
public static void main(String[] args) {
Random r = new Random();
List<Hero> heros = new ArrayList<Hero>();
for (int i = 0; i < 10; i++) {
heros.add(new Hero("hero " + i, r.nextInt(1000), r.nextInt(100)));
}
System.out.println("初始化集合后的数据 (最后一个数据重复):");
System.out.println(heros);
//传统方式
Collections.sort(heros,new Comparator<Hero>() {
@Override
public int compare(Hero o1, Hero o2) {
return (int) (o2.hp-o1.hp);
}
});
Hero hero = heros.get(2);
System.out.println("通过传统方式找出来的hp第三高的英雄名称是:" + hero.name);
//聚合方式
String name =heros
.stream()
.sorted((h1,h2)->h1.hp>h2.hp?-1:1)
.skip(2)
.map(h->h.getName())
.findFirst()
.get();
System.out.println("通过聚合操作找出来的hp第三高的英雄名称是:" + name);
}
}
思考:HashCode的底层原理?
思考(面试题):Comparator和Comparable的区别?