很久很久前初学Java时的笔记--集合操作1

 集合     Collection   是 一个接口 


下面包括(常用的!)          
  


     1.   List 接口    包括        


 1. ArrayList类  内部基于数组实现,查询快 增删慢  
(列表)     2.LinkedList类  内部基于链表实现,增删快,查询慢  
  
 2.    Set 接口     包括          1.HashSet类
(集合)        2.LinkedHashSet类


  3.     Queue 接口    包括        1.Deque类 (双向队列)
(队列)


所有的集合都共用的方法
add           addAll
clear        contains       containsAll
equals         hashcode
isEmpty        itertor
remove        removeAll retainAll
size           toArray
......






ArrayList  列表集合
1.
add("")  往集合中添加元素 
add(index,"") 指定位置添加元素  
addAll(obj)   往一个集合的末尾添加另一个集合中所有内容 
addAll(index,"")一个集合中的指定位置添加另一个集合中的所有内容
注意 对于指定位置插入删除的 如果插入位置大于集合长度 会报错
2.
remove(index)  删除指定下表的元素
remove("")    删除集合中这个对象  如果没有这个对象也不回报错
removeAll(obj)  删除这个集合中有的另一个集合中的值 0-n个  哪怕没有也不回报错。
3.
clear  清除这个集合中的所有元素
4.
contains(obj) 看看这个集合中是否包含这个元素
containsAll(集合) 看看这个集合中是否包含另一个集合中的全部元素  无关顺序必须全部都包含返回真
5.
equals 比较两个集合中的值 以及顺序! 是否一样
6.
isEmpty 查看这个集合是否为空
7.
indexOf 这个和字符串的用法是一模一样的
subList 这个和字符串的用法也是一样的
lastIndexOf  这个和字符串的用法也是一样的
8.
toArray()  将集合转换成数组的形式目前Object o = a.toArray()已经不用了
用的是这个 String[] s = a.toArray(new String[长度])
当长度小于集合的长度时 它会自动的创建一个可容纳集合的数组  ,如果长度大于集合长度  剩下的就为空


插一句 数组转换成集合 只能转化成List集合  需要用到的事Arrays工具类   asList()方法  待续
9.
size()  返回的是这个集合的容量!
10.
get(index)  得到下标为index的元素 
set(index,元素)  设置下标为index的元素的值为 元素
11.遍历集合中的元素  用迭代器
第一步 获取迭代器 
Iterator it = a.iterator();
        第二步 问有没有下一个元素
while(it.hasNext()){}
第三步 由object转换成所需要的类型
Object obj = it.next();
String str = (String)obj;
第四步 输出 sysout。。。。。
删除 第五步  将要删除的东西放在前面 避免出现空指针异常  
if("**".equals(str)){
      删除   it.remove();
}








LinkedList
1.
add("")  往集合中添加元素 
add(index,"") 指定位置添加元素  
addAll(obj)   往一个集合的末尾添加另一个集合中所有内容 
addAll(index,"")一个集合中的指定位置添加另一个集合中的所有内容
addFirst("")
addLast("")
注意 对于指定位置插入删除的 如果插入位置大于集合长度 会报错


2.
remove() 直接删除集合中的第一个元素
removeFirst() 删除集合中第一个元素
removeLast()  删除集合中的最后一个元素
removeAll(集合) 删除这个集合中所包含的另一个集合中的元素  就算没有也不报错
3.4.5.....都一样 






不同的是 LinkedList 有 以下几个方法
1.push(obj)  进栈   将值放到第一个
2.pop    出栈  将List第一个值删掉 
3.peek   返回第一个元素  不删除  如果size为0  返回空
4.poll   删除第一个元素   如果size为0  返回空






SortedSet   有顺序的set集合 常用实现类是TreeSet


如 ts.add(new Student("11",20))


这个时候student类就必须 implements Comparable接口 
重写 int compareTo(Object o)方法{
Student s2 = (String)o;
return this.name.compareTo(s2.name);
}


Collections 集合的工具包 用于对集合的一些操作
例如排序 sort
1.Collections.sort(list)
对于集合的排序 list必须实现comparable接口 重写
compareTo方法  比较单一 不灵活
2.Collections.sort(list,comparator)
可以在外部定义一个类 实现comparator接口 
重写compare(Object O1,Object o2)方法 


也可以定义一个匿名内部类
1.在类中创建一个Comparator 对象 
Comparator c = new Comparator(){


....}
sort(list,c);
2.匿名内部类
Collections.sort(list,new Comparator(){方法});








Queue 队列 先进显出 实现类LinkedList
常用方法 offer入队 把新元素加入队列尾部
poll 出队 找到头部元素,并移除
peek 找到头部元素
Deque 双向队列
常用方法 offerFirst  
offerLast
peekFirst  peekLat
pollFirst  pollFirst


Stack 栈  push 将对像进栈
  pop 出栈
peek 获得栈顶元素


!!一个问题 map中是怎样进行排序的?
首先HashMap 不会记录键值的存入顺序
Map 映射,表  把一些有关连的数据结对存储在map集合中
key --->   Value
常用的方法:  
1.给值 .put(k,v); 其中k键值唯一,内容可以重复!
2.得到值 .get(k) 根据k值来得到元素的值
3.删除值 .remove(k) 根据k值来删除元素!
Map的三种遍历方式
1.根据Key值进行遍历
map.keySet()返回了包含了所有key的集合
for(Object key:map.keySet()){
“key:” key  "Value": map.get(key)
}
2.根据V值来进行遍历
map.values()返回了包含所有V值的collections集合
for(Object obj:map.values()){
    value: obj
}
3.根据键值kv来进行遍历
Entry(key,value,next,hash)
map.entrySet()返回了所有Entry对象的组合
for(Object obj:map.entry){
Entry e = (Entry)obj;
e.getKey()          e.getValue();
}


LinkedHashMap
LinkedHashMap 会记录键值的存入顺序


一个问题还未解决
初始容量  装载因子  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值