首先说一下java中的集合框架的作用,它主要的作用就是能够灵活的变换长度,举个例子我们定义一个数组大家都知道数组定义时需要定义长度而且如果用多了会数组下标越界,用少了就会浪费空间那么有什么办法能够按照添加数据的个数来自动调整大小呢?答案是有的那就是框架集合它能够灵活的解决前面说的问题下面给大家看张图片
其中Collection和Map都是接口类如果不懂接口可以去学习一下 他们都有两个实现类这两个实现类就是我说的集合那么来说一下他们的特性:
Collection是接口储存一组不唯一(允许重复)、无序对象。
Set接口继承Collection接口,存储一组唯一(不允许重复)、无序的对象。
list接口继承Collection接口,存储一组不唯一(允许重复)、有序(以元素插入的次序来放置元素,不会重新排序)的对象。
Map接口存储一组成对的键一值对象,提供key(键)到value的映射。Map中的key不要求有序,不允许重复。value同样不要求有序,但允许重复
还有一个是迭代器Iterator接口是负责定义访问和遍历元素接口。
下面介绍主要介绍一下:
List
list中有两个常用类Arraylist和LinkedList。它们都可以容纳所有类型的对象,包括null允许重复,并且都保证元素的存储顺序。
Arraylist对数组进行了封装,实现了长度可变的数组,存储方式和数组一样下面给张图片:
以上这些就是Arraylist常用的方法下面说一下如何定义:List 名字=new Arraylist();
这样就能定义一个Arraylist的集合下面我们用上面的方法做个案例:
public static void main(String[] args) {
//定义Arraylist集合shift+Ctrl+O导包
List dogs=new ArrayList();
//添加数据
dogs.add(1);
dogs.add(2);
dogs.add(3);
dogs.add(4);
dogs.add(5);
//输出共有几条数据
System.out.println("共有"+dogs.size()+"条数据");
//在下标为1的地方添加一条数据当前位置的数据退后一个位置
dogs.add(1,6);
//遍历集合
for (int i = 0; i < dogs.size(); i++) {
System.out.println((Integer)dogs.get(i));
}
//遍历集合2
for (Object K : dogs) {
System.out.println((Integer)K);
}
//判断是否存在数据
System.out.println(dogs.contains(1));
//删除
dogs.remove(1);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/f7c3447959f2ad4451c4c5e68498eb45.png)
![](https://i-blog.csdnimg.cn/blog_migrate/add6a548f5b467948aaad8cbf9bb2b7d.png)
//定义Arraylist集合shift+Ctrl+O导包因為那些方法是Linkedlist独有的所以前面new的不是list而是linkedlist
LinkedList dogs=new LinkedList();
//添加数据
dogs.add(1);
dogs.add(2);
dogs.add(3);
dogs.add(4);
dogs.add(5);
//首部添加
dogs.addFirst(10);
System.out.println("删除返回:"+dogs.removeLast());
System.out.println("返回最后一个"+dogs.getLast());
//输出共有几条数据
System.out.println("共有"+dogs.size()+"条数据");
//在下标为1的地方添加一条数据当前位置的数据退后一个位置
dogs.add(1,6);
//遍历集合
for (int i = 0; i < dogs.size(); i++) {
System.out.print((Integer)dogs.get(i));
}
//遍历集合2
System.out.println();
for (Object K : dogs) {
System.out.print((Integer)K);
}
//判断是否存在数据
System.out.println("\n"+dogs.contains(1));
//删除
dogs.remove(1);
}
![](https://i-blog.csdnimg.cn/blog_migrate/08824a15bd4e36e0e5d5fe871f03524b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e0d5a2230f07c2ef2b8628ac611bd816.png)
//定义HashMap集合shift+Ctrl+O导包
HashMap dogs=new HashMap();
//添加数据
dogs.put("1", 1);
dogs.put("2", 2);
dogs.put("3", 3);
dogs.put("4", 4);
//输出共有几条数据
System.out.println("共有"+dogs.size()+"条数据");
//遍历集合
System.out.println();
for (Object K : dogs.keySet()) {
String n=(String)K;
System.out.print(dogs.get(n));
}
//判断是否存在数据
System.out.println("\n"+dogs.containsKey("1"));
//删除
dogs.remove("1");
//再次遍历
for (Object K : dogs.keySet()) {
String n=(String)K;
System.out.print(dogs.get(n));
}
//清空数据
dogs.clear();
}
![](https://i-blog.csdnimg.cn/blog_migrate/fe2e5ee82d90d9815f19083bd38d5174.png)
//迭代器遍历
Iterator k= dogs.keySet().iterator();
while (k.hasNext()) {
String g = (String) k.next();
System.out.print(dogs.get(g));
}
除了Map其他都不用点keyset别的也没有
//定义泛型
HashMap<String,Integer> dogs=new HashMap<String,Integer>();
List<Integer> j=new ArrayList<Integer>();
LinkedList<String> g=new LinkedList<String>();