java集合框架

  先概念一下,集合框架,也可以说是容器,在java中,存放数据的大可理解为容器。

  看之前了解到Collection是一个接口,而Collection包含了List和Set这两个接口

看图理解:

 

 

   总接口Collection能分两个接口出来,当然是有自己的方法的,这里看这么些:

collection中的添加:add

public class CollectionTest {
    public static void main(String[] args) {
        
        Collection collection=new ArrayList();

            collection.add(1);
            collection.add("asd");
            collection.add(3);
            collection.add(5);
            System.out.println(collection);
    }
}
collection.add

collection中的删除:clear

public class CollectionTest {
    public static void main(String[] args) {
        
        Collection collection=new ArrayList();

            collection.add(1);
            collection.add("asd");
            collection.add(3);
            collection.add(5);
//collection.clear删除的是所有的内容
            System.out.println(collection.clear);
    }
}
View Code

collection中是否为空:isEmpty()

public class CollectionTest {
    public static void main(String[] args) {
        
        Collection collection=new ArrayList();

            collection.add(1);
            collection.add("asd");
            collection.add(3);
            collection.add(5);
    //collection.isEmpty();如果有内容返回false 没有内容返回true
           System.out.println("是不是为空:"+collection.isEmpty());
                 
    }
}
is Empty()

collection中是否包含:contains()

public class CollectionTest {
    public static void main(String[] args) {
        
        Collection collection=new ArrayList();

            collection.add(1);
            collection.add("asd");
            collection.add(3);
            collection.add(5);
//collection.contains("asd");如果包含返回true 不包含返回false
    System.out.println("是否包含:"+collection.contains("asd")); 

   }
}
contains()

collection中内容的长度:size()

public class CollectionTest {
    public static void main(String[] args) {
        
        Collection collection=new ArrayList();

            collection.add(1);
            collection.add("asd");
            collection.add(3);
            collection.add(5);
//collection.size();Collection中的长度为size;String中的长度为length
//Collection的长度并不是说所有的元素加起来有多长,而是的每个内容
     System.out.println("collection中的内容有:"+collection.size()+"个");
   }
}
size()

最后是大头!!!!!!

  迭代器,因为Collection是接口,没有引用类型,所以不能用常用for循环来遍历,只能通过迭代器来进行遍历。

public class CollectionTest {
    public static void main(String[] args) {
        
        Collection collection=new ArrayList();

            collection.add(1);
            collection.add("asd");
            collection.add(3);
            collection.add(5);

          Iterator iterator=collection.iterator();//条件

//while循环
          while(iterator.hasnext()){
                 system.out.println(iterator.next());
         }
//for循环
    for(iterator=collection.iterator();iterator.hasNext();) {
            System.out.println(iterator.next());
        }    

 
       }
}        
Iterator的两种方法

以上就是Collection中常用的方法,如果还有其他需要的可以接着更新。

  接着介绍Collection的List接口:

 List的特点是:有序的集合,允许重复元素存在;其中包含ArrayList、Vector、LinkedList这些派生类。

接着派生类的特点具体如下:

   ArrayList跟Vector是有相同点、不同点的:

      相同点:底层都是数组,增删慢,查询块;

      不同点是:ArrayList 线程不安全,效率高;Vector 线程安全,效率低。

     LinkedList:底层是链表,查询慢,增删快;线程不安全,效率高。

这里看看list的使用方法:

list中的添加  add

public class CollectionTest {
    public static void main(String[] args) {
           
           List list=new ArrayList();  
                list.add(1);
        list.add(3);
        list.add(5);
      
    }
}            
list.add

list中的修改  set

public class CollectionTest {
    public static void main(String[] args) {
          List list=new ArrayList();
        list.add(1);
        list.add(3);
        list.add(5);
//list.set(k,o);
 //list的修改需要根据索引修改 括号里边第一个是索引 第二个是要修改的值
    System.out.println("修改的:"+list.set(1, 99));   
    }
}        
list.set

list中的删除  remove

public class CollectionTest {
    public static void main(String[] args) {
            List list=new ArrayList();
        list.add(1);
        list.add(3);
        list.add(5);
       
         list.remove(1);
//这里的删除是根据索引删除的
        System.out.println("删除"+list.remove(1));
    System.out.println(list);
    }
}
list.remove

list中的获取值   get

public class CollectionTest {
    public static void main(String[] args) {
            List list=new ArrayList();
                  list.add(1);
                  list.add(3);
                  list.add(5);
//list.get(索引);
    System.out.println("根据索引拿到的:"+list.get(1));
    }
}    
list.get()

因为父类是Collection 想遍历的话也只能通过迭代器,因为继承了父类的没有引用类型;

public class CollectionTest {
    public static void main(String[] args) {

            List list=new ArrayList();
        list.add(1);
        list.add(3);
        list.add(5);  

        Iterator iterator=list.iterator();//条件
//while        
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }
//for        
        for(iterator=list.iterator();iterator.hasNext();) {
            System.out.println(iterator.next());
        }


    }
}
literator

 

 

 

   这里Collection中list的功能特点就介绍完了,在了解完Collection后,想起之前某培训机构的校长竟然问学生"ArrayList和List的区别是什么",听到这一个问题,真是让我想到了“师傅你是做什么工作的”,这里一定记得List的子类,Collection的子类。


 

  接着看看Collection中Set接口:

Set的特点:无序(输出的顺序和插入的顺序不一样),不允许重复;其中有HashSet、HashlinkedSet、TreeSet这些派生类。它们也有独有的特点如下:

  HashSet:底层数据是哈希表;不保证有序。

  HashlinkedSet:底层是哈希表加链表;链表嘛,自然会有序。

  TreeSet:二分叉,左边小,右边大;会使元素自然排序,

 

这里set也就完成了。最后是一大家子的合照。

再接着是跟collection并列的Map

  虽然是跟Collection并列的关系了,但分下去的接口没有那么多,就Map自己。

 

 

 看看Map和并列的Collection之间会的区别有哪些:

  1. Map存储的元素是成对出现的,键是唯一的,值是可以重复的;而Collection存储元素是单独的。
  2. Map的集合存储只针对键有效,和值无关;Collection的数据结构针对元素 

说完总的,看看分下来的子类的特点

  HashMap:键是哈希表结构,可以保证键的唯一性。

  LinkedMap:Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。

  TreeMap:键是红黑树结构,可以保证键的排序和唯一性。

然后就是Map的使用方法:

  Map中的添加 put

public class MapTest {
    public static void main(String[] args) {
     Map< Integer, String> map=new HashMap<Integer, String>();
        map.put(20200520,"阿萨德");
        map.put(20200521, "q全文");
        map.put(20200502, "王企鹅");    
        System.out.println(map);
    }
}
map.put

   Map中的删除 clear

public class MapTest {
    public static void main(String[] args) {
    Map< Integer, String> map=new HashMap<Integer, String>();
        map.put(20200520,"阿萨德");
        map.put(20200521, "q全文");
        map.put(20200502, "王企鹅");    
        map.clear();
//clear之后  所有的元素都没了
        System.out.println(map);
    }
}
map.clear

  Map中的判断 是否包含键、是否包含值    containsKey、 containsValue

public class MapTest {
    public static void main(String[] args) {
        Map< Integer, String> map=new HashMap<Integer, String>();
        map.put(20200520,"阿萨德");
        map.put(20200521, "q全文");
        map.put(20200502, "王企鹅");    
//包含返回true  不包含返回false        
System.out.println("是否包含这个键"+map.containsKey(20200520));
System.out.println("是否包含这个值"+map.containsValue("大企鹅"));
    }
}
map.containsKey()/map.containsValue

  Map中看内容的长度 size

public class MapTest {
    public static void main(String[] args) {
        Map< Integer, String> map=new HashMap<Integer, String>();
        map.put(20200520,"阿萨德");
        map.put(20200521, "q全文");
        map.put(20200502, "王企鹅");    
//这里返回结果为3 只添加了3个内容    
        System.out.println(map.size());
    }
}
size()

  Map都跟Collection并列了,当然没有引用类型,也是通过迭代器来遍历的

public class MapTest {
    public static void main(String[] args) {
        Map< Integer, String> map=new HashMap<Integer, String>();
        map.put(20200520,"阿萨德");
        map.put(20200521, "q全文");
        map.put(20200502, "王企鹅");    
    
    //迭代器 while循环
    Set<Map.Entry<Integer, String>> set=map.entrySet();//获取Set<Map.Entry<Integer, String>>
Iterator<Entry<Integer, String>> iterator=set.iterator();//判断条件

        while(iterator.hasNext()) {
            Map.Entry<Integer, String> entry=iterator.next();
            System.out.println(entry.getKey()+"  "+entry.getValue());
        }
//for each
            Set<Map.Entry<Integer, String>> set=map.entrySet();//获取Set<Map.Entry<Integer, String>>
        Iterator<Entry<Integer, String>> iterator=set.iterator();//判断条件

        for(Map.Entry<Integer, String> entry:set) {
    System.out.println(entry.getValue()+" "+entry.getKey());
        }



}
    }
Iterator

到最后的结构表,是这样的:

 


 

 

 

 打住打住 如果还想了解 可以看一看常见的数据结构

posted @ 2022-05-13 17:10  凤梨小屋  阅读(37)  评论(0)    收藏  举报