java数据结构

来源:互联网 发布:ios 数组转json字符串 编辑:程序博客网 时间:2024/06/08 07:22

Array数组

java中有8中基本数据类型,除了这些,数组也可作为对象处理,创建是需要使用new关键词,一旦创建,大小不可改变。
Array类提供静态方法来动态创建和访问Java数组。
通过.length获取数组长度,
equals():比较两个数组是否相等,拥有相同元素个数,且所有对应元素两两相等。
数组是访问数据最有效率的数据结构,但很不灵活。大小固定。

Collection集合

List接口

list是一个接口不能实例化,一般需要实例化ArrayList或LinkedList。
ArrayList里面的内部实现,是通过一定的增长规则动态复制增加数组长度来实现动态增加元素的。如果在大数据量的情况下,在某一个位置随机插入或者删除元素,就会产生性能问题。LinkedList可以解决这类问题,但LinkedList在通过下标取元素的时候,需要遍历整个链表节点匹配,数据量大的情况下,效率不高。Vector是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。

遍历list

List<String> list= new ArrayList<String>();list.add("aa");list.add("bb");

一、超级for循环遍历

for (String string : list) {    System.out.println(string);}

二、循环遍历

for (int i = 0; i < list.size(); i++) {    System.out.println(list.get(1));}

三、Iterator迭代器遍历

Iterator<String> iterator= list.iterator();while (iterator.hasNext()) {    String string = iterator.next();    System.out.println(string);}

Set接口

元素没有重复,无序

HashSet

  • 不允许出现重复元素;
  • 不保证集合中元素的顺序。哈希算法来的;
  • 允许包含值为null的元素,但最多只能有一个null元素

TreeSet

  • 不允许出现重复元素;
  • 集合中元素的顺序按某种规则进行排序;
  • 不允许包含值为null的元素。

Map接口

Map是一个独立的接口,没有继承Collection接口,使用key-value的键值对存储数据。

HashMap

Map基于散列表的实现。插入和查询“键值对”的开销是固定的。可以通过构造器设置容量capacity和负载因子load factor,以调整容器的性能。

LinkedHashMap

类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点。而在迭代访问时发而更快,因为它使用链表维护内部次序。

TreeMap

基于红黑树数据结构的实现。查看“键”或“键值对”时,它们会被排序(次序由Comparabel或Comparator决定)。TreeMap的特点在 于,你得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。

遍历map

Map<String, Integer> map= new HashMap<String, Integer>();map.put("1", 1);map.put("2", 2);map.put("3", 3);

一: 普遍使用,二次取值

for (String key : map.keySet()) {   System.out.println("key= "+ key + " and value= " + map.get(key));  }

二:通过Map.entrySet使用iterator遍历key和value

Iterator<Map.Entry<String, Integer>> it = map.entrySet().iterator();  while (it.hasNext()) {   Map.Entry<String, String> entry = it.next();   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());  }

三:通过Map.entrySet遍历key和value

for (Map.Entry<String, Integer> entry :                    map.entrySet()) {   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }

四:通过Map.values()遍历所有的value,但不能遍历key

 for (Integervalue : map.values()) {   System.out.println("value= " + value); }