java.util包中提供了一些集合类,这些集合类也称为容器。说到容器又想到数组,但是集合类和数组的不同之处是:数组的长度是固定的,但是集合类的长度是可变的;数组用来存放基本类型的数据,集合存放对象的引用。
常用的集合类有List集合,Set集合,Map集合。
Collection接口
构成Collection的单位是元素。Collection接口通常不能直接使用,但是该接口提供了添加元素,删除元素,管理数据的方法。由于List接口与Set接口都继承了Collection接口,因此这些方法对List集合和Set集合是通用的。
常用的方法:
那么如何遍历集合中每一个元素呐?
通常遍历集合,都是通过迭代器来实现的(Iterator)
注意的是:iterator的next方法返回的是Object。
List集合
List集合包括List接口以及List接口的所以实现类。List接口的所有实现类。List集合中的元素允许重复,各元素就是对象插入的顺序,类似Java可以通过索引来访问集合中的元素。
List接口继承了Collection接口,因此包含Collection中的所有方法,此外,List接口还定义了一下两个重要的方法。
get和set
List接口的实现类:主要常用的是:ArrayList,LinkedList。
1.ArrayList类实现了可变的数组,允许保存所有元素,包括null,并且可以根据索引位置对集合进行快速 访问;缺点是向指定的索引位置插入对象或删除对象的速度比较慢。
2.LinkedList类采用链表结构保存对象。与上面的正好相反。
注意:与数组相同,集合的索引也是从0开始的。
这是做的增删查
package test1;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
import java.util.Vector;
public class List_Add_Delete {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in=new Scanner(System.in );
System.out.println("-----------------------");
System.out.println("1.增加"+"\t"+"2.删除"+"\n"+"3.查找"+"\t"+"4.遍历"+"\n"+"5.退出");
System.out.println("-----------------------");
//这是一个继承Collection的有序集合,List 与Set不相同
List li=new ArrayList();
//有3个
for(int i=0;i<10;i++)
{
li.add(i);
}
System.out.println();
boolean flag=true;
int a,b,c;
while(flag)
{
a=in.nextInt();
if(a==1)
{
System.out.println("请输入添加元素:");
b=in.nextInt();
System.out.println("请输入添加位置:");
c=in.nextInt();
li.add(c, b);
System.out.println(li);
}
if(a==2)
{
System.out.println("请输入删除数字:");
int d=in.nextInt();
li.remove(d);
System.out.println(li);
}
if(a==3)
{
System.out.println("请输入查找的数字:");
int e=in.nextInt();
if(li.contains(e))
{
System.out.println("存在该数字");
}
else
{
System.out.println("不存在数字");
}
}
if(a==4)
{
Iterator iter=li.iterator();
while(iter.hasNext())
{
System.out.print(" "+iter.next());
}
}
if(a==5)
{
System.exit(0);
}
}
}
}
Set集合
Set集合中的对象不安特定的方式排序,只是简单地把对象加入集合中,但是Set集合中不能包含重复对象。
Set接口常用的实现类有HashSet类和TreeSet类
HashSet类是实现Set接口,它不保证Set的迭代顺序,特别是他不保证该顺序的不变,可以使用null
HashSet并没有保证其顺序不变。
TreeSet类实现的Set集合再遍历集合时按照自然顺序递增排序
但是存入TreeSet类实现的Set集合必须是西安Comparalble接口,该接口中的compareTo(Object o)
关于Map类参考:
https://blog.csdn.net/guoguozgw/article/details/99647657