给自己做记录的Java集合

Java集合

根据所存储元素的类型不同分为两种,一种是存储value类型的Collection一种是按 key-value形式存储的Map类型

Collection

collection现在常用的分为List(有序可重复)、Vector和Set(无序不重复)集合,其中List又可以划分为ArrayList和LinkedList,Set可以划分为HashSet和TreeSet。

一、List常用的方法

  1. size() 返回集合列表中的元素个数
  2. isEmpty() 判断有没有元素 无:返回true, 有:返回false
  3. a.contains(b) 判断列表a中是否包含b 是:true 否:false
  4. iterator() 迭代器 遍历数据时可以使用
List list = new ArrayList();
       for (int i=0;i<5;i++){
           list.add(i);
       }
       Iterator l = list.iterator();
       while(l.hasNext()){
           System.out.println(l.next());
       }

运行结果

  1. toArray() 可以将list集合转换为数组
  2. add(E e) 向集合添加指定元素
  3. retainAll() 两个集合取交集
  4. remove(Object o) 删除指定元素
  5. remove(int index) 删除并返回指定位置的元素
  6. sort() 对集合进行排序排序
 List list = new ArrayList();
       list.add(2);
       list.add(3);
       list.add(7);
       list.add(9);
       list.add(1);
       list.add(11);
      System.out.println(list);
       Collections.sort(list);
       System.out.println(list);

结果

  1. get() 获取指定位置的元素
  2. set(int index,E element) 用指定的元素代替指定位置的元素
  3. indexOf(object o) 查找元素在列表中第一次出现的索引位置 不包含该元素则返回-1
  4. lastIndexOf(object o) 查找元素在列表中最后一次出现的索引位置 不包含该元素则返回-1
  5. subList(int fromIndex,int toIndex) 返回List中一部分视图,以fromIndex开始(包含),以toIndex结束(不包含)的部分
String[]  str1 = {1,2,3,4,5,6};
String[]  str2 = str1.subList(1,3);
打印出来str2 的结果:23;记住数组下标0开始!!!
15.clear() 释放list集合中的所有对象,使集合为空。 list.clear()和list=null是有区别的
ArrayList list1 = new ArrayList();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        System.out.println(list1);
        list1.clear();
        System.out.println(list1);
        list1.add(1);
        list1.add(2);
        list1.add(3);
        System.out.println(list1);
        list1=null;
        System.out.println(list1);

返回的结果
当使用list=null之后 则list不能在被使用

二、ArrayList:

一:特点

  1. 有序
  2. 可重复
  3. 任意类型任意个数
  4. 线程不安全
  5. 内部基于数组有索引(查找比较快)
三、LinkedLis

特点:

  1. 有序
  2. 可重复
  3. 任意类型任意个数
  4. 线程不安全
  5. 内部基于链表(添加删除比较快)
四、Vector

特点:

  1. 线程安全
  2. 内部基于数组
  3. 适合查询
五、ArrayList和Vector、LinkedList的区别总结

ArrayList在内存不够时默认扩张50%+1个,Vector是默认扩张1倍
Vector提供index(obj,start)接口,ArrayList没有
Vector属于线程安全级别的,但是大多数情况下不适用,因为线程安全需要更大的系统开销
所以一般能用ArrayList的情况下,就不用Vector

六、Set集合

set集合不包含重复的元素。

特点:

无序、唯一
  • HashSet
    底层数据结构是哈希表(无序唯一)
    通过依赖两个方法:hashCode()和equals()来保证元素的唯一性

    Hashset是set接口的实现类,也就是我们最常用的set集合,由于是无序的所以每组数据都没有索引,很多list可用的方法他都没有,凡是需要索引来进行操作的方法都没有。所以也不能使用普通for循环来进行遍历,只有加强型for迭代器两种遍历方法。

    • 例:get(i)、set(int index,Object o)、remove(int index)等需要索引来进行操作的方法都没有。
//增强型for
	for(News n : set){
		System.out.println(n.getID()+"\t"+n.getLitter()+"\t"+n.getAuthor());
	}
	System.out.println("*****************************************");
	//迭代器
	Iterator<News> it = set.iterator();
	while (it.hasNext()) {
		News n = it.next();
		System.out.println(n.getID()+"\t"+n.getLitter()+"\t"+n.getAuthor());
	}

  • LinkedHashSet
    底层数据结构是链表和哈希表(FIFO插入有序,唯一)
    由链表保证有序 由哈希表保证元素唯一
  • TreeSet
    底层数据结构是红黑树(唯一、无序)
    通过自然排序、比较器排序来保证元素排序
    通过比较的返回值是否为0来判断元素唯一性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值