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(这些对比都是指数据量很大或者操作很频繁的时候)

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值