集合字符串操作

集合的各种操作

Stack 栈

栈的数据结构是先进后出 先被存入道栈里面的数据最后出去

//如何创建出一个栈对象
//	   <泛型>
Stack <Object> stack = new Stack<E>();
//如何给 栈里面存入数据
Object object = new Object();
stack.push(object);

//取出栈里面的值
//当然这里取出的值是在取出之前最后放进去的值  取出来之后给他进行删除
Object o = stack.pop();

//查看栈里面的值对应栈的位置
//去出来的就是当前的位置 假如说要是没有传进来的值的话就直接返回-1
stack.search(5);

//取出栈里面最顶部的数据并不对他进行删除
//注 当栈是空的话取出对象的时候会包空指针异常 注意使用
Object peek = stack2.peek();

//测试此堆栈是否为空 返回的值是波尔值 false代表不为空 true代表空
boolean empty = stack.empty();

//如何遍历给栈里面添加对象
Stack<Integer> stack = new Stack<>();
for (int i = 0 ; i < 10 ; i++){
    stack.push(i);
}
//如何遍历把栈里面的值全部都取出来
while (!stack.empty()){
    System.out.println(stack.peek());
}

知识点

栈也是List的一种实现 他继承于 Vector

List<Integer> list = new Stack<>();

List 集合

知识点

List集合的特点 他是可以有重复数据的集合

Set不可以有重复的数据

他们继承于 Collections

List的四种实现

//第一种和第二种都不是线程安全的
//第一种ArrayList 他底层是数组 默认的初始长度是10
//他的每次扩容是1.5贝进行扩容
//扩容的机制当容器存不下的时候进行扩容 比如默认长度是10他 插入11的时候就会触发扩容
List<Integer> arrayList = new ArrayList<Integer>();
//第二种LinkedList 是没有默认长度的 底层是链表格式
//他是对数据进行修改的时候速度比较块 但是在进行数据的增加的时候他是比较蛮的
//要走完前面的所有数据 在把新加的数据存入进去
List<Integer> linkedList = new LinkedList<Integer>();

//第三种第四中都是线程安全的
//Vector 实现了一个动态数组。是可实现自动增长的对象数组。
//vector和arrayList的比较
//都是采用数组格式存储数据,索引数据块插入数据慢
//ArrayList会比Vector快,他是非同步的
//涉及到多线程,Vector是同步更好一些
List<Integer> vector = new Vector<Integer>()
//Stack也是通过数组实现的  也是线程安全的 
List<Integer> list = new Stack<Integer>();

List常用的方法

        //对集合添加数据
        arrayList.add(1);

        //判断集合里面是否存在传入的那个值 arrayList.contains(5)
        boolean contains = arrayList.contains(5);

        //获取出集合里面的元素  根据下标开始获取 从0开始  假如说要是超出范围就报错
        Integer integer = arrayList.get(0);

        //获取出对应的元素下标 假如说要是集合里面没有对应的值的话就直接返回-1
        int i = arrayList.indexOf(10);

        //判断集合是否是空 返回的是boolean类型的  是空就返回false 不是空就返回true
        boolean empty = arrayList.isEmpty();

        //根据下标删除对应的元素
        arrayList.remove(0);

        //set(int index,Object o)覆盖元素 修改对应元素下标里的值
        arrayList.set(0,7);

        //返回集合的长度
        arrayList.size();

        //给集合返回给数组
        Integer [] arr = (Integer[]) arrayList.toArray();

        //清空集合
        arrayList.clear();
        
        //判断有没有元素
        arrayList.isEmpty()size()返回有几个元素
		如果判断一个集合有无元素 
		建议用isEmpty()方法.这清晰,简明

		list!=null跟!list.isEmpty()有什么区别?

		这就相当与,你要喝水,
		前面就是判断是不是连水杯都没有,
		后面就是判断水杯里面没有水,
		连盛水的东西都没有,
		这个水从何而来?
		所以一般的判断是
		if(list!=null && !list.isEmpty()){
		这个里面取list中的值
		}else{
			做其他处理
		}
		

https://blog.csdn.net/Baple/article/details/8604585?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control

Set集合

三种实现方式

第一种 HashSet

	//第一种
	//HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。
	//Set中是不能出现重复数据的。
	//Set中可以出现空数据。
	//Set中的数据是无序的。
    Set<String> hashSet = new HashSet<String>();  
        for(int i= 0;i<5;i++){  
           hashSet.add(i+"");  
        }  
        hashSet.add("2");       //重复数据,不会写入  
        hashSet.add(null);      //可以写入空数据  
		//引用的迭代器来进行循环遍历
        Iterator<String> iter = hashSet.iterator();  
        while(iter.hasNext()){  
           System.out.println(iter.next());        //输出是无序的  
        }  

/*这段执行之后的打印输出是:
null  
3  
2  
1  
0  
4  
*/

第二种 LinkedHashSet

	//LinkedHashSet是有序的(不同于HashSet)。
	//查询性能好 但是插入性能稍微逊色于HashSet
	Set<Integer> set = new LinkedHashSet<>();

	for(int i= 0;i<5;i++){  
 	   set.add(i+"");  
	}  
	set.add("2");       //重复数据,不会写入  
	set.add(null);      //可以写入空数据  
	Iterator<String> iter = set.iterator();  
	while(iter.hasNext()){  
   	 	System.out.println(iter.next());        //输出是有序的  
	}  
/*输出打印如下:
0  
1  
2  
3  
4    
null  
 */

第三种 TreeSet

	//不能写入空数据
	//写入的数据是有序的。
	Set<String> set = new TreeSet<String>();  
    for(int i= 0;i<5;i++){  
        set.add(i+"");  
    }  
    set.add("2");       //重复数据,不会写入  
    //set.add(null);        //不可以写入空数据        
    Iterator<String> iter = set.iterator();  
    while(iter.hasNext()){  
        System.out.println(iter.next());        //输出是有序的  
    }  
     
/*输出打印为:
0  
1  
2  
3  
4  
*/

Set集合常用的方法

			 //添加
    		 set.add(1);
    		 set.add(2);
    		 set.add(3);

             //删除指定元素
    		 set.remove(3);
 
         	 // 判断集合中是否包含某一个元素
		 	 set.contains(a);   

		 	 //判断集合是否为空
		 	 set.isEmpty();

    		 //清空set
    		 set.clear();

             //返回set集合的大小
             set.size();

             //for-each遍历整个集合
    		 for(Integer value:set) {
    			 System.out.println(value);
    		 }
    		 
    		 //iterator方法
    		 Iterator<Integer> value=set.iterator();
    		 while(value.hasNext()) {
    			 int s=value.next();
    			 System.out.println(s);
    		 }

Hash 集合

等待更新。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值