java自带数据结构(set/list/stack/queue)

一、set

1.1 创建

Set set=new HashSet();

1.2 添加元素

set.add(1);

1.3 set转化为list

List<String> list1 = new ArrayList<String>(set);  

二、List

2.1 新建一个List

List<String> test=new ArrayList<String>();

https://www.cnblogs.com/llq1214/p/11383075.html

三、ArrayList

2.1 新建一个ArrayList

2.1.1 一维
ArrayList<Integer> test=new ArrayList<Integer>();
2.1.2 二维ArrayList
ArrayList<ArrayList<Integer>> arr=new ArrayList<ArrayList<Integer>>();

2.2 ArrayList方法

2.2.1 判断是否包含某个元素:contains()

2.3 ArrayList的反转

public class
test {
    public static void main(String[] args) {
        ArrayList<Integer> arr=new ArrayList<Integer>();
        for(int i=0;i<10;i++){
            arr.add(i);
        }
        Collections.reverse(arr);
        System.out.println(arr);
    }
}

输出结果:
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

2.4 arraylist中删除元素

public class
test {
    public static void main(String[] args) {
         List<String> test=new ArrayList<String>();
         test.add("test1");
         test.add("test2");
         test.add("test3");
         test.add("test4");
         test.remove(0);
         test.remove("test2");
         System.out.println(test);
    }
}

输出结果:
[test3, test4]

四、Stack

4.1 新建一个stack

Stack<Integer> stack=new Stack<Integer>();

4.2 取栈顶元素

stack.peek();

4.3 出栈

int top=stack.pop();

4.4 入栈

stack.push();

4.5 判断栈是否为空

stack.empty();

五、queue

4.1 新建一个队列

LinkedList类实现了Queue接口,因此可以把LinkedList当作Queue来使用

Queue<String> queue=new LinkedList<String>();

4.2 添加元素

queue.offer("a");
queue.add("a");

offer, add的区别:
一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。这时新的offer方法就可以起作用了。它不是对调用add()方法抛出一个unchecked异常,而只是得到由offer()返回的false。

4.3 取队列第一个元素

4.3.1 在队列中删除的情况
String ret=quque.poll();
String ret=quque.remove();

poll和remove的区别:
remove和poll方法都是从队列中删除第一个元素,remove的行为与Collection接口的版本类似,但是新的poll方法在用空集合调用时不是抛出异常,只是返回null。因此新的方法更诗和容易出现异常条件的情况。

4.3.2 仅取出,不删除
String ret=queue.element();
String ret=queue.peek();

peek和element的区别:
element和peek用于在队列的头部查询元素,与remove方法类似,在队列为空的时候,element抛出一个异常,而peek返回null。

二、Array、List、ArrayList的区别

2.1 Array

Array是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据,获取数据的时间复杂度是O(1),但是要删除数据的开销很大,因为这需要重排数组中的所有数据。

2.2 List

List是一个有序集合,可以包含重复的元素,提供了按索引访问的方式,它继承了Collection
List是一个接口,不能直接像如下这样实例化:

List<Integer> test=new List<Integer>();

List有两个重要的实现类,ArrayList和LinkedList
ArrayList可以看作是一个能够自动增长容量的数组
LinkedList是一个双向链表,在添加和删除元素时具有比ArrayList更好的性能,但在get与set方面弱于ArrayList(这些对比都是指数据量很大或者操作很频繁的时候)

猜你喜欢

转载自blog.csdn.net/kking_edc/article/details/107250428
今日推荐