List 列表
- List是元素有序并且可以重复的集合,称为序列
- List可以精确控制每一个元素的插入位置,或删除某个位置的元素
- List的两个主要实现类是ArrayList和LinkedList
- ArrayList
- ArrayList底层是由数组实现的
- 动态增长,以满足应用程序的需求
- 在列表尾部插入或删除数据非常有效
- 更适合查找和更新元素
- ArrayList中的元素可以为null
HashSet
- HashSet是set的一个重要实现类,称为哈希集
- HashSet中的元素无序并不可以重复
- HashSet中只允许一个null元素
- 具有良好的存取和查找的性能
- 迭代器 Iterator
- Iterator接口可以以统一的方式对各种元素集合进行遍历
- hashNext方法检测集合中是否还有下一个元素
- next()方法返回集合中的下一个元素
// 将英文单词添加到hashset中
Set set = new HashSet();
set.add("blue");
set.add("red");
set.add("black");
set.add("yellow");
set.add("white");
// 显示集合的内容
System.out.println("集合中的元素为:");
// 将元素放在迭代器中
Iterator it = set.iterator();
// 遍历迭代器并输出
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
// 定义宠物猫对象
Cat huahua = new Cat("花花", 12, "英短");
Cat fanfan = new Cat("凡凡", 3, "田园猫");
// 将宠物猫对象放入HashSet中
Set<Cat> set = new HashSet<Cat>();
set.add(huahua);
set.add(fanfan);
// 显示宠物猫的消息
Iterator<Cat> it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// 再添加一个与花花属性一样的猫
Cat huahua01 = new Cat("花花", 12, "英短");
set.add(huahua01);
System.out.println("============================");
it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// 重新插入一个新的宠物猫
Cat huahua02 = new Cat("花花二代", 2, "英短");
set.add(huahua02);
System.out.println("添加花花二代后的宠物信息:");
it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// 在集合中查找花花的信息并输出
if (set.contains(huahua)) {
System.out.println("花花找到了");
System.out.println(huahua);
} else {
System.out.println("花花没有找到");
}
// 在集合中使用名字查找花花的信息
System.out.println("============================");
System.out.println("通过名字查找花花信息");
boolean flag = false;
Cat c = null;
it = set.iterator();
while (it.hasNext()) {
c = it.next();
if (c.getName().equals("花花")) {
flag = true;//找到了
break;
}
}
if (flag) {
System.out.println("花花找到了");
System.out.println(c);
} else {
System.out.println("花花没找到");
}
/*
删除花花二代的信息并重新输出
* 1.集合内部有一把锁,在遍历集合时,是不能删除元素的
* 2.删除思路:设置布尔类型变量flag,初始值false。定义Cat类型引用cat1,当存在“花花二代”时,falg变为true,cat1赋值为“花花二代”。循环结束后,根据flag的值,删除“花花二代”。
* */
boolean flag1 = false;
Cat cat1 = null;
// 增强型for循环,将集合set中的数据取出依次放到cat中
for (Cat cat : set) {
if ("花花二代".equals(cat.getName())) {
flag1 = true;
cat1 = cat;
}
}
if (flag1) {
set.remove(cat1);
}
System.out.println("删除花花二代后的数据");
for (Cat cat : set) {
System.out.println(cat);
}
//删除集合中所有宠物猫的信息
System.out.println("===============");
boolean flag2 = set.removeAll(set);
// 方法一
// if(flag2){
// System.out.println("全部删除");
// }else {
// System.out.println("数据还有");
// }
// 方法二
if (set.isEmpty()) {
System.out.println("全部删除");
} else {
System.out.println("数据还有");
}
Map
- Map中的数据是以键值对的形式存储的(key-value)
- key-value以Entry类型的对象实例存在
- 可以通过key快速地查找value
- 一个映射不能包含重复的键
- 每个键最多只能映射到一个值
HashMap
- 基于哈希表的Map接口实现
- 允许使用null值和null键
- key值不允许重复
- HashMap中的Entry对象是无序排列的
public static void main(String[] args) {
Map<String, String> animal = new HashMap<String, String>();
System.out.println("请输入三组单词对应的注释,并存放到hashmap");
Scanner console = new Scanner(System.in);
// 添加数据
int i = 0;
while (i < 1) {
System.out.println("请输入key值(单词):");
String key = console.next();
System.out.println("请输入value值(注释):");
String value = console.next();
animal.put(key, value);
i++;
}
// 打印输出value的值,使用迭代器
System.out.println("===========================");
System.out.println("使用迭代器输出所有的value");
Iterator<String> it = animal.values().iterator();
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
// 打印输出key和value的值,使用迭代器
// 通过entrySet方法
System.out.println("===========================");
System.out.println("通过entrySet方法得到key-value");
Set<Map.Entry<String, String>> entrySet = animal.entrySet();
for (Map.Entry<String, String> entry : entrySet) {
System.out.print(entry.getKey() + "-");
System.out.println(entry.getValue());
}
// 查找数据,通过单词找到注释并输出
// 使用keySet方法
System.out.println("===========================");
System.out.println("请输入要查找的单词:");
String strSearch = console.next();
// 1.取到keySet
Set<String> keySet = animal.keySet();
// 2.遍历keySet,每次从keySet中查找到一个元素放到key中
for (String key : keySet) {
if (strSearch.equals(key)) {
System.out.println(("找到" + "键值对为:" + key + "-") + animal.get(key));
break;//找到即终止
}else {
System.out.println("没有找到");
}
}
}
网友评论