java学习笔记19

1、再次强调什么是有序List,就是第一个存进去的第一个取出来,简称怎么存就怎么取。


10、练习

 

12、MAP查表法

查表时只要求存在对应关系,又不要求向上题一样是有序输出,所以用Map(数组是有序的映射输出例如:下标1对应星期一,下标2对应星期二),当然Map中一个键key不仅可以对应一个值value,还可以对应一个集合如:set<Student>

13、utilities是实用工具的意思。

一个接口可以继承另一个接口,一个普通类可以实现多个接口,而一个抽象类可以实现一个接口

划线的写法的意思是,传入的对象类型首先要具有可比较性(也即拥有compareTo()方法),其次其父类对象也可以传入。当然Collections工具里有这种方Collections.sort()

对于有重复元素来讲,我们只能有List来存储,但是List没有特定的排序方法,这就需要借助工具类Collections中的排序方法来实现,如果Collections中没有的话就只能自己写了。譬如下图就可以借助Collections中的sort()



当然也可以自己写一个排序的(首要)按字符串长度,(次要)再按字母排序的。

也可以通过Collections.sort(list,new compByLength())通过写一个比较器老实现也可以。里面交换顺序那一段也可以用Collections.swap(list,i,j)来实现。


当然自己写的还是麻烦,最简洁的按长度排序就是搞个比较器


15、对自然排序进行逆转用Collections.reverse()返回一个比较器。或者对已有比较器得到的顺序进行逆转,用Collections.reverseOrder(已有的比较器)


16、Collections.shuffle()随机讲集合中的元素进行重新安放排序,类似对扑克牌随机洗了次排了个新顺序。

Vector默认就是同步安全的,但是其他的集合也可以通过Collections的synchronozedSet()方法来将自己变为同步的集合。



自己对集合加锁的步骤如下


17、直接打印数组arr,相当于调用arr.toString()打印的其实是数组的引用,因为toString()方法是继承自Object,在那里就是定义的打印对象的引用值。想要打印出数组的内容要么重新写一个函数,要么用工具类中的Arrays.toString(arr)


18、把数组转为List集合可以用asList()方法。数组的方法是有限的,很多方法不提供需要自己写想用更多的方法如:知道数组中是否包含某一个元素,想知道某个元素的下标,转为集合后,可用的方法就多了很多。


上图中的List直接能打印出来内容是因为集合List已经在内部定义时覆盖重写了toString()方法,所以可以直接打印出机和内部的内容。但是Arrays.asList(arr)返回的List里面只能存放对象的引用,换句话说,List里面没有存放1,2,3,4这些基本类型数据,而是存放的数组arr的引用,List里面就只存放了数组的引用一个元素对象。打印效果如下:



当数组存的是Integer对象后,数组转换为List后,List里面才存的是Integer的对象。

数组转为List后,除了删除,增添这种改变数组长度的方法不能用外,其余的基本都可以用。

同理集合也可以转为数组,为的是不允许别人进行增删,只准让他查阅,转为数组后限定了使用者的权限,。使用toArray(类型 数组)要传入一个指定类型的数组,要不然集合不知道该转为什么类型的数组。


高级for()就是为了 




高级for()只能遍历单列集合,所以不能直接遍历Map这种双列的






数组转换为list时也支持可变参数,直接传入要操作的数组元素即可。asList(参数类型... arr)


22、静态导入,之前import导入的都是类,例如import java.util.ArrayList;后面还可以进一步把类里的方法都都导入(相当于事先声明认识一下,混个脸熟,后面可以直接用)这样就不用每次写Collections.了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值