- 集合框架
集合类:
为什么会出现集合类?
面向对象对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储最常用的一种方式。
数组和集合类同是容器,有何不同?
数组虽然也可以存储对象,但长度是固定的;集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。+
集合类的特点?
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
根接口常用方法:
遍历集合:
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Bianli {
public static void main(String[] args) {
//创建集合对象
Set<String> set = new HashSet<>();
//添加元素对象
set.add("hello");
set.add("world");
set.add("java");
//遍历集合对象
//方法1:转数组
//method1(set);
//方式2:迭代器
//method2(set);
//方式3:增强for
method3(set);
}
public static void method3(Set<String> set) {
for(String s : set){
System.out.println(s);
}
}
public static void method2(Set<String> set) {
Iterator<String> it = set.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
public static void method1(Set<String> set) {
Object[] objs = set.toArray();
for(int i = 0; i < objs.length; i++){
System.out.println(objs[i]);
}
}
}
注意:不使用集合去修改,而是用迭代器去操作,就不会发生并发修改异常
- 泛型.
foreach循环
几种常见的数据结构:
队列:先进先出
栈:先进后出
自己根据集合方法实现
JavaAPI实现:
面试题:Collection和Collections有什么区别?
Collection是集合体系的最顶层,包含了集合体系的共性
Collections是一个工具类,方法都是用于操作Collection
模拟斗地主发牌:
import java.util.ArrayList;
import java.util.Collections;
public class DouDIZhu {
public static void main(String[] args) {
String[] color = {"♥","♦","♠","♣"};
String[] num = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
ArrayList<String> box = new ArrayList<>(54);
for(int i = 0; i < color.length; i++)
{
for(int j = 0; j < num.length; j++)
box.add(color[i] + num[j]);
}
box.add("小王");
box.add("大王");
ArrayList<String> ZhangSan = new ArrayList<>();
ArrayList<String> LiSi = new ArrayList<>();
ArrayList<String> WangEr = new ArrayList<>();
//洗牌
Collections.shuffle(box);
//发牌
for(int i = 0; i < box.size(); i++)
{
if(i % 3 == 0)
{
ZhangSan.add(box.get(i));
}
else if(i % 3 ==1)
{
LiSi.add(box.get(i));
}
else
WangEr.add(box.get(i));
}
System.out.println(ZhangSan);
System.out.println(LiSi);
System.out.println(WangEr);
System.out.print("底牌是:");
System.out.print(box.get(box.size()-3) +",");
System.out.print(box.get(box.size()-2) +",");
System.out.print(box.get(box.size()-1));
}
}