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");
});
}
}