泛型
1.泛型将接口的概念进一步延伸,“泛型”的字面意思就是广泛的类型。类、接口和方法代码可以应用 于非常广泛的类型,代码与它们能够操作的数据类型不再绑定在一起,同一套代码可以用于多种数 据类型,这样不仅可以复用代码,降低耦合性,而且还提高了代码的可读性以及安全性。
2.把运行时期的问题提前到了编译期
3.避免强制类型转换
4.优化程序设计
foreach循环
List list=new ArrayList();
list.add(123);
list.add(123);
list.add(123);
list.add(33);
list.add(432);
for (Object object : list) {
System.out.println(object);
}
Set:
无序,不允许重复
hashset:
不保证顺序 底层数据结构是哈希表
linkedhashset:
底层是哈希表加链表 哈希表保证唯一性,链表保证有序
treeset:
可以排序 使用元素自然排序排序
使用Comparator
Map:
Map和collection的区别 :
1.map存储元素是成对出现的,键是唯一的,值可重复
2.Collection存储元素是单独的
map集合的数据结构只针对键有效,和值无关
collection的数据结构针对元素有效
hashmap
键是哈希表结构,可以保证键的唯一性
LinekedHashMap
Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。
TreeMap
键是红黑树结构,可以保证键的排序和唯一性
Map的主要功能:
1:添加功能 V put(K key,V value):添加元素。这个其实还有另一个功能
如果键是第一次存储,就直接存储元素,返回null
如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
2:删除功能
clear():移除所有的键值对元素
remove(Object key):根据键删除键值对元素,并把值返回
3:判断功能
boolean containsKey(Object key):判断集合是否包含指定的键
boolean containsValue(Object value):判断集合是否包含指定的值
boolean isEmpty():判断集合是否为空
4:获取功能
Set<Map.entry<k,v>> entrySet():???
get(Object key):根据键获取值 Set keySet():获取集合中所有键的集合
Collection values():获取集合中所有值的集合
5:长度功能
int size():返回集合中的键值对的对数
Map遍历是需要用set接收:
Map<Integer, String> map=new TreeMap<>();
map.put(1, "one");
map.put(3, "two");
map.put(2, "three");
System.out.println(map);
Set<Integer> s=new LinkedHashSet<>();
Random random=new Random();
while (s.size()<10) {
int a=random.nextInt(20)+1;
s.add(a);
}
System.out.println(s);
Collections:
Collections是针对集合进行操作的工具类,都是静态方法。
主要方法:
1.void sort(List list):排序 默认情况下是自然顺序。
2.int binarySearch(List list,T key):二分查找
3.T max(Collection coll):最大值
4.void reverse(List list):反转
5.void shuffle(List list):随机置换
List和Map的区别:
一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List中存储的数 据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。