第十四天笔记

List中对象的去重须要对标准封装类中重写hashcode和equals方法

Arraylist 和LinkedList的区别

Arraylist:底层为数组,查询快增删慢 安全有序的集合 存取有序 能存储重复元素

Linkedlist底层是链表 增删快 查询慢 安全有序集合 存取有序 能存储重复元素

linkedlist的特有的方法:

addFirst :始终添加到首位

addlist:始终添加到末尾

getFirst:获取首位

getLast:获取末尾

RemoveFirst:删除首位元素

removeLast:删除末位元素

增强for循环

for(数据类型 变量名:数组或者集合){语句体} 其中数组和集合是想要遍历的集合

数据类型是从集合中<>内的 变量名自己起

for和增强for 都是数组和集合 然而增强for 底层为迭代器

可变参数: int… i 其实就是数组(底层)

可以在可变参数的传参上 传递任意个相同类型的参数

可变参数只能放在参数末尾 一个参数列表只能有一个可变参数

static List aslict(T…a) 返回一个受指定数组支持的固定大小的列表。

其实数组工具类返回的这个List集合并不是咱们的那个List接口 他是另外的一个内部类

所以 他只是名义上看着像List集合 但是内部根本就没有add方法

ArrayList<String> al = new ArrayList<>(); al.add("lol"); al.add("pubg"); al.add("dota"); al.add("cf"); al.add("dnf"); al.add("wawa"); System.out.println(al); // 数组转集合 // 此处返回的集合 list 这两个集合虽然名字相同,但是代表的类却完全不一样 List<Integer> li = Arrays.asList(3,4,5,6,7,8,9); li.add(5);//在此处会报错 // 创建的arraylist ArrayList<Integer> al2 = new ArrayList<>(li); al2.add(10); System.out.println(al2); } 

set:无序集合 存取无序 不允许有重复元素 (Hashset Treeset)

他在存储是底层依赖的是hash表结构 他的顺序按照hash排列

Treeset按照首字母的字典排序

hashset有个子类可以保证该集合有序但不常用:Linked HashSet

set集合的遍历利用迭代器或者高级for循环(其中常用高级for)

当set存储的元素为基本类型或者字符串时会自动去重

存储引用类型时(地址不同不会删除)需要对hashcode进行重写

将其他集合(q)转换为set类型(s) Hashset<> s=new hashset<>(q);

map

map接口: 双列的 将建映射到之的对象

一个映射不能包含重复的建,一个键对应一个值,一个值可以有多个键

在map操作中,主要操作键

map与collection接口不同 :

​ map是双列,Collection是单列的
​ Map的键唯一,Collection的子体系Set是唯一的
​ Map集合的数据结构值针对键有效,跟值无关
​ Collection集合的数据结构是针对元素有效

成员方法:

​ V put(K key,V value) 添加元素

 V remove(Object key)                			移除key 对应的 键值对

​ void clear() 清空map

​ boolean containsKey(Object key) 是否包含key

​ boolean containsValue(Object value) 是否包含value

boolean isEmpty()    					  是否为空

 int size()                     					  键值对的个数

往map集合中存储几个键值对

​ Set<Map.Entry<K,V>> entrySet()
返回此映射所包含的映射关系的 Set 视图。

​ Set keySet() 键是不可重复的
​ 返回此映射中所包含的键的 Set 视图。

//第一种遍历方法 Set<Entry<Integer, String>> es = hs.entrySet(); // for (Entry<Integer, String> entry : es) { // System.out.println(entry.getKey() + "==="+entry.getValue()); // } Iterator<Entry<Integer, String>> iterator = es.iterator(); while (iterator.hasNext()) { Entry<Integer, String> en = iterator.next(); System.out.println(en.getKey() + "====" +en.getValue()); } // 第二种方法 先找到键 在遍历键 根据键找值 Set<Integer> keySet = hs.keySet(); for (Integer i : keySet) { System.out.println(hs.get(i)); } System.out.println("======================"); 
打印值的方法 Collection<V> values() 值是可以重复的 返回此映射所包含的值的 Collection 视图。 Collection<String> va = hs.values(); for (String s : va) { System.out.println(s); } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值