A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© leslier 初级黑马   /  2018-12-13 12:50  /  1072 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、java中的集合介绍
   学习东西,首先要知道学习他有什么用,他能够带给我什么样的效果。只有知道什么时候用,怎么用,这样才会对我们有用处,不然百学浪费时间。本篇主要讲解java中的常使用的集合的简单对比,没有讲到集合的细节,更深了解集合的方法就从javaAPI中自己学习更多的。
1.首先知道java中为什么要用集合这个概念
   1). java操作比较多的数据是一般会用到数组,但是对于对象,数据比较庞大的数据,数组就不能满足java的需求,这样java就定义了集合这个类。
  2).方便对多个集合进行操作,就使用到集合这个类
2.java中的集合族的基本介绍
 1).Collection是集合类的根接口,Java中没有提供这个接口的直接的实现类。但有继承该类的两大接口类,就是List和  set集合,set集合不能包含重复的元素,List集合是一个有序的集合,可以包含重复的元素。
 2)Map集合Java.util包中的另一个接口,它和Collection接口没有关系,是相互独立的,但是都属于集合类的一部分。和        collection集合最大的区别就是,Map集合是双列的,一般是成对出现的,即(键,值)总是以键值对出现。
3.java中的单列结合
    java单列结合的家族中,collection是根接口,其下有两个继承子类List和Set集合。
    List又有ArrayList,vector,LinkedList三个子类                                       Set有Hashset和Treeset两个子类
 3.1 单列各个集合底层数据结构和基本性质
        一.List集合:(有序,元素可以重复)
            1.ArrayList集合:
                  1).底层数据结构是数组,查找快,增删慢。
                  2). 线程不安全,效率高
            2.Vector集合:
                   1) 底层数据结构是数组,查询快,增删慢
   2)线程安全,效率低
            3.LinkedList集合:
                   1) 底层数据结构是链表,查询慢,增删快
   2)线程不安全,效率高
        二、Set集合(元素不可重复,元素唯一)    
              1.Hashset集合:
                   1) 底层数据结构是哈希表,哈希表依赖两个方法hascode ()和equals()方法
   2)两个方法的执行顺序:                 首先判断hascode()值是否相同                      是:继续执行equals()方法,看其返回值          是true:说明元素重复,不添加           是false:就直接添加元素      否:就直接添加到集合
              2.Treeset集合:
                   1)底层数据结构是二叉树
 4.java的双列集合
       1.  java中的Map集合是双列的,Map集合是Map集合家族的根接口,它有HashMap和TreeMap集合两个子类。
       2. Map集合中只对键有效,而对值是无效的。
       3.子类的数据结构:
                Hashmap:底层数据结构是哈希表,Treemap底层数据结构是二叉树,其性质和Set的底层数据结构一样。
二、java中的集合的使用
   1.如何正确的使用集合了?
          集合使用的一般步骤:
                    1.首先创建一个集合
                    2.创建集合的对象
                    3.通过集合对象给集合中添加元素
                    4.遍历集合元素
代码示例:
记得在java程序中导入包
import java.util.ArrayList; import java.util.Iterator; import java.util.List;
public class ListTest { public static void main(String[] args) { //1.创建集合 2.创建元素对象 List list =new ArrayList(); //将元素添加到集合中 list.add("hello"); list.add("jkdjsa"); list.add("java "); //遍历集合  Iterator  it=list.iterator();  while(it.hasNext()){  String  s=(String ) it.next();  System.out.println(s);  } }
}
运行结果:
hello
jkdjsa
java 
   2.集合的遍历方法:
   作为集合的遍历,其实方法比较多,进行简单的总结如下:

1)Iterator:迭代输出,是使用最多的输出方式。
2)ListIterator:是Iterator的子接口,专门用于输出List中的内容。
3)增强for循环:
4)for循环
代码如下:
1.迭代器:        Iterator  it=list.iterator();//创建迭代器对象
          while(it.hasNext()){//循环遍历
   }
2. for循环   for(int i=0;i<list.size();i++){
                }
3.增强for:   for(int x  :  a){   }
    简单介绍一下增强for:增强for:
    格式:
      for(数组或集合的类型 变量名: 数组或集合名){
          直接用变量名
      }
  好处:简化了数组和集合的遍历


3. Map集合的遍历
public class MapDemo {
public static void main(String[] args) {
//创建集合
Map<String ,String > map=new HashMap<String,String>();

//向集合中添加元素
map.put("001", "张三");
map.put("002", "李四");
//遍历集合
/*
* 1.获取所有的键,
* 2.遍历键,得到每一个键
* 3.通过每个键获取每个值

* */
//将所有的键集中到一个集合
Set<String> set=map.keySet();
//遍历键的集合,获取键
for(String key: set){
//根据键去找值
String value=map.get(key);
System.out.println(key+"----"+value);
}
}
}

 
三、java中的集合的选择
    根据实际需求来选择合适的集合。
1.单列还是双列:
     单列就选Collection类型的,双列选Map类型的
2.选择单列后看元素是否唯一
      是:选择Set集合
            看元素是否排序:
                          是:TreeSet   否:HashSet
      否:   选择List集合
             安全线高低:         
                  高:Vector
          低:ArrayList 或LinkedList '
       增删多:LinkedList
      查询多:ArrayList

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马