java集合框架
由于是初学,所以只介绍“增删改查”四种方法。
JAVA集合主要包括:
ArrayList
集合遍历
LinkedList
HashSet
TreeSet
Map
HashMap
TreeMap
这里着重介绍ArrayList
ArrayList集合
底层是Object数组
格式:List< E > a=new ArrayList<>();
List< Integer > a=new ArrayList<>();
==================================================
解析:E为数据类型,包含引用数据类型和基本类型。
但是,基本类型必须变成包装类,例如:
byte->Byte
short->Short
long->Long
float->Float
double->Double
boolean->Boolean
int->Integer
char->Character
==================================================
1.增加方法:a.add(E e);
a.add(5);
2.删除方法:a.remove(int index);
a.remove(1);
index是索引编号,从0开始的。用于删除指定编号的元素。
或者:a.remove(E e);
a.remove((Integer) 4);
用于删除a集合当中首次出现的元素e。
清除集合中所有的元素:a.clear();
a.clear();
3.改变元素方法:a.set(int index,E e);
a.set(3,5);
将集合a中的索引编号为index上的元素变为e。
4.查询方法:a.get(int index);
System.out.println(a.get(2));
用于查询索引编号为index上的元素,并返回。
5.其他方法
(1)求集合的长度:int b=a.size();
int length=a.size();
(2)测试集合是否没有元素:
boolean ffff=a.isEmpty();
没有元素的话,返回true。
(3)用于返回该元素在集合中最后一次出现的位置索引。
a.lastIndexOf(Object elem);
System.out.println(a.lastIndexOf(5));
(4)对集合进行升序排序,对汉语无用。
Collections.sort(a);
(5)将集合a中所有的元素加入到集合c中。
ArrayList< Integer > c=new ArrayList<>();
c.addAll(a);
(6)将集合进行逆序输出
List gg=new LinkedList<>();
Collections.reverse(gg);
System.out.println(gg);
(7)将集合a中的元素按照正确的顺序加入的数组当中。
Object[] o=a.toArray();
Object[] b=a.toArray();
==================================================
集合遍历
1.传统for循环 >for (int i = 0; i < a.size(); i++) { System.out.println(a.get(i)); }2.高级for循环
for (Integer gg : a) {
System.out.println(gg);
}
3.lambda表达式(比较重要)
a.forEach(t->{
System.out.println(t);
});
==================================================
LinkedList集合
格式:List< E > a=new LinkedList<>();
List< Integer > a=new LinkedList<>();
底层是链表。
由于和ArrayList公用同一个接口List,所以“增删改查”的方法大致相同。
LinkedList和ArrayList两者但是有序和可重复的。
两者之间的比较:
ArrayList,增删很慢,查询很快。
LinkedList,增删很快,查询很慢。
HashSet集合
(哈希Set)
底层是哈希码。无序不可重复。
格式:Set< E > a=new HashSet<>();
Set< Integer > a=new HashSet<>();
1.增加方法:a.add(E e);
2.删除方法:a.remove(Object e);
由于是无序的,所以只能通过对应元素进行删除。
清除方法:a.clear();
3.修改方法:无。只能先删除再进行添加。
4.查询方法:a.contains(Object o);
判断集合是否包含指定元素,包含则返回true。
5.拥有toArrars()方法,与ArrayList的用法相同。
TreeSet集合
底层是二叉树。不可重复,但是对于实现了comparable或comparator接口的类型有序。
comparable:八种基本数据类型都实现了,String中的英文也可以。
格式:Set< E > a=new TreeSet<>();
Set< Integer > a=new TreeSet<>();
由于和HashSet公用同一个接口Set,所以“增删改查”的方法大致相同。
TreeSet和HashSet都是无序的,使所以都是用lambda表达式进行遍历的。
Map集合
之前的几个集合都是单列型的,而Map集合是双列型的。
存放数据无序,key不可以重复,value可以重复。
HashMap集合
底层是哈希表。key对应的记录无序。
默认初始容量是16,加载因子是0.75(如果有第17个元素要加进来,则容量变为16+16x0.75=28,而不是16x2=32)
格式 Map< key,value> a=new HashMap<>();
Map<Integer,String> hash=new HashMap<>();
1.增加方法:hash.put(key k,value v);
hash.put(1,“蒙多”);
2.删除方法:hash.remove(key k);
hash.remove(1);
通过key进行删除。
清除方法:hash.clear();
3.修改方法:通过增加方法进行实现。
hash.put(1,“塞恩”);
4.查询方法:hash.get(key k);
hash.get(1);
通过key查询value。
5.其他方法:
hash.containsKey(1);
hash.containsKey(key k);
用于判断是否包含指定的键(key),包含则返回true。
6.可以直接打印:
System.out.println(hash);
TreeMap集合
底层是二叉树。默认初始容量是16,加载因子是0.75。
由于和HashMap公用同一个接口Map,所以“增删改查”的方法大致相同。
格式 Map< key,value> a=new TreeMap<>();
Map<Integer,String> tree=new TreeMap<>();
TreeMap和HashMap的遍历推荐使用lambda表达式。
tree.forEach((k,v)->{
System.out.println(k+"="+v);
});