Java List集合与Set集合

Java List集合与Set集合


前言

新手java集合学习~第一篇博客请多多谅解
这篇大致讲讲java常用的4个集合ArrayList,LinkedList,HashSet,TreeSet吧~
冲冲冲~


一.List接口下的集合:存放数据可以重复,并且有顺序

(1)ArrayList:底层是Object数组,增删很慢,查询很快

1.创建集合:

ArrayList aList=new ArrayList();//默认大小为10,并且集合中什么类型的数据都可以放置,当然是非基本数据类型(泛型)
泛型:(保证程序安全)
ArrayList<String> aList1=new ArrayList<String>();//限制了集合内存放的内容`

2.添加元素

aList.add("sda");

3.取出元素

Object a=aList.get(0);	

4.获取集合中有效元素个数

int n=aList.size();

5.遍历集合

aList.forEach(temp->{
  System.out.println(temp);
});

6.插入元素(在指定位置前面插入元素)

aList.add(1,"sm从入门到捆绑!");

7.修改元素(修改指定位置元素的内容)

aList.set(0,"java从入门到放弃");

8.删除元素()

aList.remove(4); //根据下标删除
也可以 aList.remove("java从入门到放弃");//根据内容删除
注意若想删除非Object类型的内容,则要进行强制转换
aList.add(10);
aList.remove((Object)10);

9.清空元素

clear();

10.判断集合中是否包含某个元素(返回boolean)

boolean falg=aList.contains("aaa");

11.截取字符串

String a=aList.subString(i,j);

代码演示:

import java.util.ArrayList;
	import java.util.Scanner;
	public class Shudefengjie {
	public static void main(String[] args) {
		ArrayList aList=new ArrayList();//构建一个初始化为10的空列表
		aList.add("gogogo");
		aList.add("mysql从删库到跑路");
		aList.add("gogogo");
		aList.add("mysql从删库到跑路");
		aList.add(true);//Boolean类型
		aList.add(12);//Integer
		aList.add(3.14);//Float
		//取出数据
		Object a=aList.get(0);//返回类型为Oject
		//获取集合中元素个数(获取实际存在的元素个数)
		int len=aList.size();
		System.out.print(aList.get(len-1));//输出最后一个元素
		//遍历集合
		for(Object s:aList) {
			System.out.println(s);
		}
		//lambda()表达式便利集合(1.8之后)  集合名.forEach(temp->{});
		aList.forEach(temp->{
			System.out.print(temp);
		});
	}	
	}

(2)LinkedList集合:底层是链表,增删很快,但查询很慢(具体的方法同,ArrayList);

这里同ArrayList的使用方法差不多,把上面代码示例改成LinkedList试试,肯定就会了~

二.Set接口下的集合:存放数据无序且不可重复

基本方法与List一致
区别:无get方法(无获取方法那么也没有修改方法)

(1)HashSet:底层是哈希表。无序不可重复

1.添加用add

2.删除用remove("");通过内容删除

3.无修改方法,也无法通过下标访问(除非先删再加)

代码示例如下:

	import java.util.HashSet;
	import java.util.Scanner;
	import java.util.Set;	
	public class Main {
		public static void main(String[] args) {
			Scanner sc=new Scanner(System.in);
			Set<String> aSet=new HashSet<String>(10,1);//10为集合容量,当集合内容超过容量时会添加10*1(加载因子)个容量
			aSet.add("不要");
			aSet.add("偷懒");
			aSet.add("功夫不负");
			aSet.add("有心人");
			aSet.forEach(temp->{
				
				System.out.print(temp+"\t");
			});
		}
	}

(2)TreeSet:底层是二叉树。有序但是不可重复(对于实现了Comparable,Comparator接口的类型)

1.TreeSet会自动对存入的内容进行排序(对于实现了Comparable接口的数据类型(8种基本数据类型))

代码演示如下:

import java.util.HashSet;
	import java.util.Scanner;
	import java.util.Set;
	import java.util.TreeSet;
	
	public class Main {
		public static void main(String[] args) {
			Scanner sc=new Scanner(System.in);
			Set<Integer> aSet=new TreeSet<>();//10为集合容量,当集合内容超过容量时会添加10*1(加载因子)个容量
			aSet.add(30);
			aSet.add(21);
			aSet.add(100);
			aSet.forEach(temp->{
				System.out.print(temp+"\t");
			});			
		}
	}

总结

希望对你有帮助~ 希望可以共同进步~
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值