集合可以理解为在内存中存放一组对象的容器,对象是数据的封装,而对象又构成了集合。在java中的集合框架是一种线性的数据结构,但是它分为两种,一种是物理结构,一种是逻辑结构。物理结构是一种连续存储的结构,比如说数组;而逻辑结构可以理解为在内存块中是不连续的,比如说链表,一个链表是分为两中内容的,一个是该链表所存储的数据,还有一个呢,那就是指向下一个链表的指针,通过指针而把表给连起来,称之为链表。数组其实也是可以完成像集合一样的存储的,但是数组存在一定的弊端,数组一旦创建,其大小,类型是固定的,在特定的情况下不能更方便的使用,因此,为了与数组互补,集合也就应运而生了。
在java.util包中存在三种最重要的集合,其分别是list,set,map,它们各自有各自的特点,这三种都是接口。其中list:1> list的实现类主要有ArrayList,Linkedlist及其Vector,list中存储的数据是有序的,而且也是可以重复的,也就是说list按照添加的顺序,依次的tb存储在list下标从小到大的位置。做一个简单的代码测试
public class Test {
public static void main(String[] args) {
Test test = new Test();
test.testList();
public void testList(){//类
//创建一个List对象
List list = new ArrayList();
list.add(1);
list.add(1);
list.add(2);
for(Object a:list){
System.out.print(a+" ");
}
}
此段代码的运行结果为:{1 1 2}
反应了其有序可重复的特点。
2>set同样是一个接口,它常用的实现类有Hashset,Treeset。set集合的存储特点可以说是和list完全相反的,它是一种无序而且不能重复的存储特点。同样的用代码做一个测试 public class Test {
public static void main(String[] args) {
Test test = new Test();
test.testSet();
public void testSet(){
//创建Set对象
Set set = new HashSet();
set.add(1);
set.add(2);
set.add(5);
set.add(3);
set.add(4);
set.add(1);
set.add(null);
System.out.println(set);
Iterator it = set.iterator();
while(it.hasNext()){//判断有元素可迭代
int i = it.next();
System.out.print(i+" ");
}
}
}
}
此段代码的运行结果是:{1 2 3 4 5}
可以说明其无序不可重复的特点。
3>最后则是map集合,map的实现类常用的有Hashmap,Hashtable和Treemap。
map与以上两者稍微的有点不同,它是一种映射关系,在map中,存储两种数据,tb表达为map,而以上两者都只有一个数据,而且都是通过下标来访问的,map中k是不可以重复的,而v是可以重复的,进行一段代码测试
public class Test{
public static void main(String[] args){
testmap test=new testmap();
public void testMap(){
Map map = new HashMap();
map.put(1, "aaa");
map.put(2, "bbb");
map.put(3,"ccc");
map.put(2, "ddd");
System.out.println(map);
//获取key集合(Set)
Set set = map.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
int key = it.next();
//通过key获取对应的value值
String value = map.get(key);
System.out.println("key="+key+" value="+value);
}
}
}
}
此段代码的运行结果是:key=1 value=aaa;key=2 value=ddd;key=3 value=ccc。
这三种集合各有其所试用的地方,对于像我这种初学者可以让整个代码简化,思路更清晰。
二:获得各种数据存储方式长度的方法。
数组:定义一个数组Array[];那么获得该数组长度的方法是使用其length方法。
字符串: String st = "aaa";
st.length();
这里的length是字符串的一种属性,而数组的length是一种方法。
List:迭代或者直接通过下标输出,list.size()
set:迭代while(it.hasNext()){//判断有元素可迭代
int i = it.next();
System.out.print(i+" ");
}
map:只能用迭代的方法,
//获取key集合(Set)
Set set = map.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
int key = it.next();
//通过key获取对应的value值
String value = map.get(key);
System.out.println("key="+key+" value="+value);
}
map先是通过迭代器先得到key值,因为是一种一一对应的关系,所以用key值就可以得到value值了。