集合:-----容器 与数组相似 存储后还能改变
指就有某种特性的具体或抽象的对象汇总而成的集体
集合的分支体系
Collection Map
存储的都是value 存储的是以 key --value形式存在
List Set
有序可重复 无序无重复 key无序无重复 value 无序可重复
List集合
1.ArrayList 2.LinkedList 3.Vector
1.ArrayList
如何创建对象
无参构造方法 默认带空间的构造方法 带collection参数的构造方法
ArrayList特点 适合遍历轮询 ,不适合插入删除
CURD
存值 add
取值 get
删除 remove
该值 set
清除 clear
ArrayList中常用的方法:
add(E e) add(int index,E e)
addAll(Collection c); add(int index,Collection c)
clear();将集合内的全部元素清除
boolean = contains(Object);找寻某一个给定的元素是否在集合中拥有
ensureCapacity(int minCapacity);
E = get(int index);
indexOf(Object obj);第一次出现的位子的索引
lastIndexOf();最后一次出现的位子
isEmpty();是否为空
Iterator = list.iterator();//选代器
remove(int index)--->删除索引位置的元素 remove(Object obj) --->删除对象
trimToSize();删除数组中多余的空间
集合的交集 并集 差集
removeAll();差集
retainAll();交集
addAll();并集
由于arraylist底层是一个Object[] 的数组 什么类型都可以存
*使用时需要自己造型才能够使用
泛型:用来规定数据类型,定义的时候用一个符号代替某种类型
在使用时用具体数据类型将定义的数据类型代替换掉
注意:泛型不能使用基本类型 如果想要使用基本类型 需要使用包装类 使用的是引用类型
泛型可以用在哪里?
1.泛型类
类定义的时候描述某种数据类型 集合的使用就是这样
2.泛型接口
与泛型类相似 子类实现接口时必须添加泛型 如下:
public interface Test<X>{
public X value;
}
public class Son<X> implements Test<X>{
}
3.泛型方法
方法调用时传参数 方法的泛型与类无关 带有泛型的方法可以放在不带泛型的类中
Set --->HashSet
LinkedHashSet
TreeSet
Set的子类 HashSet <E> Set 里面对象不能重复
HashSet <String> names = new HashSet <String>();
names.add("Jack");
names.add("Jack"); //如果重复则选择最先出现的 ,第二个不能存进(键值对)内部使用HashMap实现,键key不可重复 //集合是无序的 添加的顺序与打印的顺序不一样
如:
names.add("b");
names.add("c");
names.add("a");
names.add("d");
System.out.println(names);
输出的是 : [a,b,c,d]TreeSet <Integer> score = new TreeSet <> ();
score.add(25);
score.add(65);
score.add(258);
score.add(20);
System.out.println(score);
输出是 :[ 20,25,65,258] 会自动排序HashMap里面的 key 是不可重复的的但可以是任意的一个值 ,key 是整数 由对象的地址按一定的算法算出来的,如果对象相同,则 hash 值就相同
HashMap<String ,Integer> score = new HashMap<>();
score.put("Chinese",89);
score.put("Math",91);
score.put("English",95);
score.put("PE",99);
score.put("Chinese",99); //如果相同就是更改 Key(Chinese)的值 位子是无序的
System.out.println(score);
//获取所有的Key
System.out.println(score.keySet());
//获取所有的值
System.out.println(score.values());
//获取Entry
System.out.println(score.entrySet()); //获取键值对
//获取键所对应的的值
System.out.println(score.get("English")); //改键必须存在 否则为 null
//键值对的遍历
//1.通过遍历key 来得到每一个key 对应的值
for(String key : score.keySet()){
//通过key得到值
int s = score.get(key);
System.out.println("key:" + key+ " value:" + s);
}
//2.通过EntrySet 得到 Entery 对象的集合
//一个Entry 管理一个键值对 getKey getValue
Set<Map.Entry<String ,Integer>> entrys = score.enterySet();
for(Map.Entry entry : entrys){
//得到Entry 对应的key
String key = (String)entry.getKey();
//获得value 对应的值
Integer value = (Integer)entry.getValue();
System.out.println("key:" + key+ " value:" + s);
}
Set集合 和 List
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...