集合详解

Posted liduchang

tags:

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

微信公众号:非科班的科班
关注可获得更多的Java教程。问题或建议,请公众号留言;
如果你觉得文章对你有帮助,欢迎赞赏[1]

集合

概念:
  • 用来存放一组数据的数据结构
数组的缺点:
  • 长度不可变
  • 在前面增删数据,操作繁琐
集合提供了简便的数据操作方法

1.1 集合的继承结构

Collection 接口
  |- List 接口
      |- ArrayList
      |- LinkedList
  |- Set 接口
      |- HashSet
      |- TreeSet

Map 接口
  |- HashMap
  |- TreeMap

2 LinkedList

链表
  • 两端效率高
方法:
add(数组)
添加数据 
get(int i)    //获取指定位置数据
remove(int i) //删除指定位置的数据,返回被删除的数据
remove(数据)  //找到第一个相等数据删除,返回true,表示找到数据并删除,否则返回false 
size()       //数据的数量
iterator()   //辅助创建迭代器实例的方法
两端操作数据的方法
addFirst(), addLast()
getFirst(), getLast()
removeFirst(), removeLast()
队列操作 Queue
offer()      addLast()
peek()       getFirst()
poll()       removeFirst()
栈操作 Stack
push()       addFirst()
pop()        removeFirst()

练习代码:

package demo;

import java.util.LinkedList;

public class Test {
public static void main(String[] args) {
    /*
     * <> 泛型
     * 限制集合中存放的数据类型
     *
     * 泛型和集合,不支持基本类型
     * 可以使用包装类型
     */
    LinkedList<String> list = new LinkedList<String>();     
    list.add("aaa");
    list.add("ttt");
    list.add("jjj");
    list.add("111");
    list.add("ccc");
    list.add("kkk");
    list.add("aaa");
    list.add("xxx");
    System.out.println(list.size());//数据量
    System.out.println(list);
    System.out.println(list.get(0));//访问第一个值
    System.out.println(list.get(list.size()-1));//尾部值
    System.out.println(list.remove(3));//删除下标3位置
    System.out.println(list);
    System.out.println(list.remove("aaa"));//删除aaa
    System.out.println(list);

    //双向链表下标遍历效率低
    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }

}
}

ArrayList

  • 内部封装一个数组,用数组来存储数据
  • 内部数组的默认初始容量 10,存满后 1.5倍增长
new ArrayList()
  • 可以指定更大的初始容量,来提高效率
new ArrayList(1000)
  • 访问任意位置效率高
  • 增删数据,效率可能会降低

方法和 LinkedList 相同,但没有两端操作数据的方法

add()
get()
remove()
remove()
size()
iterator()

ArrayList 和 LinkedList

  • 只在两端操作数据,选择 LinkedList

练习代码:

package demo;

import java.util.ArrayList;
import java.util.Iterator;

public class Test {
public static void main(String[] args) {
    ArrayList<Integer> list = new ArrayList<Integer>();
    list.add(222);
    list.add(333);
    list.add(666);
    list.add(444);
    list.add(444);
    list.add(888);
    list.add(555);
    System.out.println(list.size());
    System.out.println(list);
    System.out.println(list.get(3));
    System.out.println(list.remove(3));
    System.out.println(list);
    System.out.println(
        list.remove(Integer.valueOf(222)));
    System.out.println(list);

    //下标遍历
    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }

    //迭代器遍历
    Iterator<Integer> it = list.iterator();
    while(it.hasNext()) {
        Integer a = it.next();
        System.out.println(a);
    }

}
}

微信公众号:非科班的科班
关注可获得更多的Java教程。问题或建议,请公众号留言;
如果你觉得文章对你有帮助,欢迎赞赏[1]

技术图片

 

 

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

(转) Java中的负数及基本类型的转型详解

详解Android WebView加载html片段

金蝶handler中 collection 代码片段理解

Alfred常见使用

比较 C# 中的字符串片段并从集合中删除项目

带有红宝石集合/可枚举的酷技巧和富有表现力的片段[关闭]