持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情 1.Collection 接口存储一组不唯一,无序的对象
2.list 接口存储一组不唯一,有序(插入顺序)的对象
3.Set接口存储一组唯一,无序的对象
4.Map接口存储一组键值对像,提供key到value的映射
5.ArrayList实现了长度可变的数组。在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高
6.LinkedList采用链表存储方式。插入、删除元素是效率比较高
例题:
package arrayList;
/**狗狗类
* 狗狗类
* * @author y *
*/ public class Dog {
private String name;
private String strain;
/** * 带参构造方法 *
* @param name
* @param strain
*/ public Dog(String name, String strain) {
this.name = name;
this.strain = strain;
} /**
* 无参构造方法
*/ public Dog() {
} public String getName() { return name;
} public void setName(String name) {
this.name = name;
} public String getStrain() { return strain;
} public void setStrain(String strain) {
this.strain = strain;
} @Override public String toString() {
return getName() + "\t" + getStrain();
} }
/**测试类 package arrayList;
import java.util.LinkedList;
public class TestLinkedList {
public static void main(String[] args) {
Dog dogOne = new Dog("欧欧", "二哈");
Dog dogTwo = new Dog("亚亚", "拉布拉多");
Dog dogThree = new Dog("菲菲", "金毛");
Dog dogFour = new Dog("美美", "泰迪");
// 使用LinkedList添加狗狗 LinkedList dogList = new LinkedList(); dogList.addFirst(dogOne);
dogList.add(1, dogTwo);
dogList.add(dogThree);
dogList.addLast(dogFour);
System.out.println("第一条狗狗的昵称是:" + ((Dog) dogList.getFirst()).getName());
System.out.println("最后一条狗狗的昵称是:" + ((Dog) dogList.getLast()).getName());
// 删除两条狗狗 dogList.removeFirst();
dogList.remove(dogThree);
System.out.print("\n删除部分狗狗狗还有" + dogList.size() + "条狗狗。\n分别是:\n");
for (Object ob : dogList) {
if (ob instanceof Dog) {
System.out.println(ob); } } } }
7.List接口的常用方法
8.使用List借口提供的remove()、contains()方法移除、判断 元素
9.通过List接口的实现类ArrayList实现
元素个数不确定
要求获得元素的实际个数
按照存储顺序获取并打印元素信息
使用ArrayList存储元素
10.LinkedList的特殊方法
11.Set接口(Set方法去重)
Set是Set接口常用的实现类
Set中存放对Set接口存储一组唯一,
无序的对象 Hash象的引用
Set方法去重( 字符串或一组数字)
12.Map接口常用方法
13..Map接口常用方法的使用
public static void main(String[] args) {
// 创建Map集合对象
Map countries = new HashMap();
// 添加国家
countries.put("CN", "中华人民共和国");
countries.put("US", "美利坚和众国");
countries.put("JA", "日本");
countries.put("RU", "俄罗斯联邦");
// 获得key是CN国家、
System.out.println("CN对应的国家是:" + countries.get("CN"));
// map里的元素个数
System.out.println("Map中共有" + countries.size() + "组数据");
//移除JA这个键的值
countries.remove("JA");
// map里包含JA的key吗?
System.out.println("Map中包含JA的key吗?" + countries.containsKey("JA"));
// Map里key的集合
System.out.println(countries.keySet());
// Map里value的集合
System.out.println(countries.values());
// Map里的key-value 集合
System.out.println(countries);
// 删除map里所有元素
countries.clear();
System.out.println("已清空map中的数据!");
}
14.如何遍历Map集合
方法1:通过迭代器Iterator实现遍历
获取Iterator :Collection 接口的iterator()方法
Iterator的方法:
boolean hasNext(): 判断是否存在另一个可访问的元素
Object next(): 返回要访问的下一个元素
方法2:
增强for循环:使用Iterator和增强型for循环遍历Map集合
15.foreach迭代遍历语法
for(元素类型t 元素变量x : 数组或集合对象){
引用了x的java 语句
}
17.foreach
for的简化形式与for的区别仅仅是隐藏了循环条件,不需要使用下标,适合在不关心下标,需要吧数组或集合全部遍历的情况(jdk1.5或以上)
foreach 迭代不会数组越界,适合循环输出所有的元素
foreach会默认全部输出数组或列表对象
迭代对象可以是数组或集合
18.如何解决以下强制类型转换时容易出现的异常问题?
List的get(int index)方法获取元素
Map的get(Object key)方法获取元素
Iterator的next()方法获取元素
19泛型集合的使用
泛型的好处和应用规范:
将运行时的异常提前至了编译时
.避免了没必要的强制类型转换
泛型在集合中常见应用和规范
public static void main(String[] args) {
Dog dogOne = new Dog("欧欧", "二哈");
Dog dogTwo = new Dog("亚亚", "金毛");
Dog dogThree = new Dog("菲菲", "中华田园犬");
Dog dogFour = new Dog("美美", "泰迪");
// 创建List泛型集合(<>里面的内容指定数据类型)
List<Dog> list = new ArrayList<Dog>();
list.add(dogOne); list.add(dogTwo);
//方法一:使用foreach遍历dogs对象 for (Dog dog : list) { System.out.println(dog);
}
//方法二:使用for循环遍历dogs对象
for (int i = 0; i < list.size();
i++) { System.out.println(list.get(i));
} // Map泛型集合 Map<String, Dog> map = new HashMap<String, Dog>(16);
map.put(dogOne.getName(), dogOne);
map.put(dogTwo.getName(), dogTwo);
Set keySet = map.keySet(); Iterator it = keySet.iterator();
while (it.hasNext()) {
String key = (String) it.next();
Dog dog = map.get(key);
System.out.println(key + "\t" + dog.getStrain());
} }
20.list集合的语法:(List结合ArrayList使用)
(1).普通的创建ArrayList对象 :List 对象名 = new ArrayList();
(2).结合泛型集合创建ArrayList对象 :List<类名> list = new ArrayList<类名>();
21.Map集合的语法(Map结合HashMap使用)
(1).普通的创建Map对象 :Map 对象名 = new Map();
(2).结合泛型集合创建ArrayList对象 :Map<数据类型,类名> map = new HashMap<数据类型,类名>();
例题:
/**
*企鹅类(NewPenguin)
* 使用List存储企鹅信息
* 把多个企鹅的信息添加到集合中
* 查看企鹅的数量及所有企鹅的信息
* 删除集合中部分企鹅的元素
* 判断集合中是否包含指定企鹅
* @author y *
*/ public class NewPenguin {
private String name; private String sex;
public NewPenguin() { }
public NewPenguin(String name,String sex) {
this.name = name; this.sex = sex;
} public void setName(String name) {
this.name = name;
} public String getName() {
return name;
} public void setSex(String sex) {
this.sex = sex;
} public String getSex() {
return sex; } public String toString() {
return getName() + "\t" + getSex() + "\n" ;
} } /**
*测试类(NewPenguin) *
*/ public static void main(String[] args) {
NewPenguin penOne = new NewPenguin("欧欧","Q仔");
NewPenguin penTwo = new NewPenguin("亚亚","Q妹");
NewPenguin penThree = new NewPenguin("美美","Q妹");
NewPenguin penFour = new NewPenguin("菲菲","Q妹");
//方法一:利用List泛型集合 System.out.println("这是List泛型集合"); List<NewPenguin> list = new ArrayList<NewPenguin>();
list.add(penOne); list.add(penTwo);
list.add(penThree); list.add(penFour);
//方法一:foreach遍历NewPenguin对象 for(Object pen : list) { System.out.print(pen);
} System.out.println(" ");
//方法二:for循环遍历NewPenguin对象 for(int i =0;i<list.size();i++) { System.out.print(list.get(i));
} System.out.println(" ");
//方法二:利用Map泛型集合 System.out.println("这是Map泛型集合");
Map<String ,NewPenguin> map = new HashMap<String,NewPenguin>(); map.put(penOne.getName(), penOne);
map.put(penTwo.getName(), penTwo);
map.put(penThree.getName(), penThree);
map.put(penFour.getName(), penFour);
//使用Iterator遍历 Set keyMap = map.keySet();
Iterator it = keyMap.iterator();
while(it.hasNext()) {
String key = (String) it.next();
NewPenguin pen = map.get(key);
System.out.println(key + "\t" + pen.getSex());
} }