java 数组和集合

Posted tiandi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 数组和集合相关的知识,希望对你有一定的参考价值。

1、概念说明

    区别:数组固定长度的,集合,数组的长度是可以变化的。

    List,继承Collection,可重复、有序的对象

    Set,继承Collection,不可重复、无序的对象

    Map,键值对,提供key到value的映射。key无序、唯一;value无序,可重复

2、集合类结构图

技术图片

3、集合特性比较

    技术图片

线程安全的效率都比较低,Vector,已被淘汰,可使用ArrayList替代。Hashtable,已被淘汰,可使用HashMap替代,如果是高并发的线程安全的实现,推荐使用ConcurrentHashMap。

4、接口和方法

    Collection的常见方法:
    (1)添加
        boolean add(E o);                                              (6)修改:set(index,elementt)   (7)查询:get(index),indexof(obj)

    (2)删除
        boolean remove(Object o);
        boolean removeAll(Collection<? extends E> c)
        void clear();
    (3)判断  
        a.判断集合中是否有元素:boolean isEmpty();
        b.判断集合中是否包含某个元素:boolean contains(Object o);
        c.判断集合中是否包含某些元素:boolean contains(Collection<?> c);
    (4)获取
        a.获取集合中元素个数:int size();
        b.遍历集合中所有元素(迭代器):Iterator<E> iterator();
        c.判断两个集合中是否存在相同的元素并保留两个集合中相同的元素删除不同的元素:boolean retainAll(Collection<?> c);
   (5)其他
        将集合中元素转为数组:  Ojbect[] toArray();

   Map的接口方法:1、增加:put(key,value),putall(map)  2、删除:clear(),remove(key)3、判断:isEmpty(),containValue(),containsKey(),  4、查询:get(key),size(),entrySet(),keySet()

5、集合遍历

     list遍历

import java.util.*;
 
public class Test{
 public static void main(String[] args) {
     List<String> list=new ArrayList<String>();
     list.add("Hello");
     list.add("World");
     list.add("HAHAHAHA");
     //第一种遍历方法使用foreach遍历List
     for (String str : list) {            //也可以改写for(int i=0;i<list.size();i++)这种形式
        System.out.println(str);
     }
 
     //第二种遍历,把链表变为数组相关的内容进行遍历
     String[] strArray=new String[list.size()];
     list.toArray(strArray);
     for(int i=0;i<strArray.length;i++) //这里也可以改写为  foreach(String str:strArray)这种形式
     {
        System.out.println(strArray[i]);
     }
     
    //第三种遍历 使用迭代器进行相关遍历
     
     Iterator<String> ite=list.iterator();
     while(ite.hasNext())//判断下一个元素之后有值
     {
         System.out.println(ite.next());
     }
 }
}

   map遍历

import java.util.*;
 
public class Test{
     public static void main(String[] args) {
      Map<String, String> map = new HashMap<String, String>();
      map.put("1", "value1");
      map.put("2", "value2");
      map.put("3", "value3");
      
      //第一种:普遍使用,二次取值
      System.out.println("通过Map.keySet遍历key和value:");
      for (String key : map.keySet()) {
       System.out.println("key= "+ key + " and value= " + map.get(key));
      }
      
      //第二种
      System.out.println("通过Map.entrySet使用iterator遍历key和value:");
      Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
      while (it.hasNext()) {
       Map.Entry<String, String> entry = it.next();
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
      }
      
      //第三种:推荐,尤其是容量大时
      System.out.println("通过Map.entrySet遍历key和value");
      for (Map.Entry<String, String> entry : map.entrySet()) {
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
      }
    
      //第四种
      System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
      for (String v : map.values()) {
       System.out.println("value= " + v);
      }
     }
}

 

以上是关于java 数组和集合的主要内容,如果未能解决你的问题,请参考以下文章

将两个数组 排列组合到一个数组集合 求java 代码

java中把json怎么转换成数组?

集合详解及代码测试

201621123062《java程序设计》第九周作业总结

转载--编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议60~64)

Swift和Java关于集合类型的比较