Collection集合

1.Collection 集合包括 list  和 set 集合

2.  list集合:子类  ArrayList 底层数据结构是数组,查询快,增删慢,线程不安全,效率高

        LinkedList     底层数据结构是链表,查询慢,增删快,线程不安全,效率高

特有功能:void  addFirst()   void   addLast()等等

         Vector  底层数据结构是数组,查询快,增删慢,线程安全,效率低,但一般不用

注意:list集合的 void add(int index,E element):在指定位置添加元素

E set(int index,E element) :在指定位置修改元素,返回被修改的元素

3.  list集合特有功能:ListIterator<E> listIterator();  此迭代器特有功能:boolean hasPrevious();   E Previous();可以实现集合的逆向遍历,但必须先正向遍历

	//List集合遍历并修改元素
		List<String> list=new ArrayList<String>();
		//添加元素
		list.add("Hello");
		list.add("world");
		list.add("java");
		//注意不能迭代器遍历,集合修改元素,否则会发生并发修改异常ConcurrentModificationException 
		//遍历集合  1.迭代器遍历,迭代器修改元素	
		ListIterator<String> ls=list.listIterator();
		while(ls.hasNext()){
			if(ls.next().equals("world")){
				ls.set("c++");
			}
		}
		System.out.println(list);//[Hello, c++, java]
		//2.集合遍历,集合修改
		for(int x=0;x<list.size();x++){
			if(list.get(x).equals("world")){
				list.set(1,"c++");
			}
		}
		System.out.println(list);//[Hello, c++, java]
		
4. 将一个数组转成一个list集合

/*把数组转换成集合
 * String> List<String> java.util.Arrays.asList(String... arg0)
 * 注意事项:可以把集合转换成数组,但必须注意数组的长度不能改变,
 *         (String... arg0) 本质是数组
		List<String> list1 =Arrays.asList("Hello","java","123");
		//list1.add("javaee");//UnsupportedOperationException
		//list1.remove(1);//UnsupportedOperationException
		list1.set(1, "world");
		for(String s:list1){
			System.out.println(s);
		}

5. set集合和list集合的区别

set集合元素是唯一的,同时是无序的(即元素存储和遍历的时候,顺序可能不一样)

list集合元素可以重复,是有序的(即元素存储和遍历顺序一样)

6. set集合 :子类 hashSet   底层数据结构是哈希表,保证元素唯一性

   LinkedHashset 底层数据结构是哈希表和链表,链表保证元素有序(即元素存储和遍历顺序一样)

TreeSet 底层数据结构是二叉树结构(红黑树是一种自平衡的二叉树结构),并且能够按照某种规则对元素进行排序

  set集合的唯一性是依赖于hashCode()和equals()方法

7.TreeSet  

    A:自然排序    自定义对象的时候必须实现Comparable接口
          存储:第一个为根节点 ,之后的元素按照(通过底层的Comparable()方法,大的(即返回值为正数)排在根节点的右边,小的(即返回值为负的)排在根节点的左边);
          遍历:从根节点开始,按照左中右的顺序依次遍历
    B:比较器排序
           new TreeSet(Comparator<? super E> comparator)  ;    Comparator 是个接口,实际上要的是一个该接口的子类对象 所以一般用匿名内部类


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值