歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java集合簡述

Java中集合淺談

1.這裡我主要講一下集合中List和Set兩類

(1).List中又分為ArrayList、Vector、LinkList

(2).Set中又分為HashSet、TreeSet

集合:和數組一樣,也是存儲數據的容器

2.集合和數組的區別

(1).數組長度固定,集合長度可變

(2).數組能存基本數據類型,也能存引用數據類型。集合只能存引用數據類型

(3).數組只能存單一數據類型,集合能存任意引用類型

3.List存入順序和取出順序一致,存儲的元素可以重復。(有序、可以重復)

(1)ArrayList:底層是Object的數組

ArrayList中的一些常用方法

a).增加:add()及重載

b).刪除:remove(index)、remove(Object)、clear()

c).修改:set(index,Object)

d).查找:contains().依據equals()方法來判斷是否包含該元素

e).輸出:for()循環:size()、get(index)

特殊注意的地方:

1.set 返回的值是該位置上原先的元素

2.remove(Object):移除此列表中首次出現的指定元素(如果存在)

(2)Vector:和ArrayList用法基本一致。

Vector和ArrayList區分

(2).1推出時間

前者推出時間比後則早,但是現在比較常用ArrayList

(2).2線程安全

前者線程安全,後者非線程安全(不支持多線程)

(2).3後者效率高(因為大部分程序都是單線程)

(2).4輸出方式:for()循環、迭代器Iterator

(說到迭代器那就講講迭代器吧

Iterator:迭代器,用於取出集合中的元素

迭代器使用時注意幾點:

1.要定義在循環的外面

2.hashnext()方法不移動指針,next()方法移動指針

3.每一個迭代器只能迭代一次)

LinkList和ArrayList試用范圍

LinkedList:底層是雙向鏈表和ArrayList基本用法一樣

ArrayList:經常用於查詢,而對於LinkList經常用於頻繁的增加刪除修改

下面是一段關於ArrayList的代碼用於說明List

package day09;
import java.util.ArrayList;
import java.util.Iterator;
public class TestArrayList {
public static void main(String[] args) {
//<String>為泛型<>內為集合內只能存入的數據類型,不用泛型也可以,但是使用泛型之後,存入集合的數據就有限制了
//      ArrayList<String> list = new ArrayList<String>();
ArrayList list = new ArrayList();
//      向集合對象中list中添加元素,可以是任意類型的元素因為沒有定義泛型<>
list.add("one");
list.add(1);
list.add("three");
//      list.add(1, "two");//在下標1處添加元素,是add()方法的重載
//      System.out.println(list.remove(2));// 下標
//      System.out.println(list.remove("two"));// 刪除元素
//      list.clear();//清除集合中所有元素
//      int i = (Integer) list.set(1,"two");// 返回結果是原先位置上的值
//      System.out.println(i);
//      輸出list中的元素
System.out.print(list);
System.out.println();
boolean f = list.contains(new String("one"));// 依據equals方法
System.out.println(f);
//      for循環輸出list中元素
for(int j=0;j<list.size();j++){
Object o = list.get(j);// Object o = new String("abc");
System.out.print(o+" ");
}
}
}

輸出結果:
[one, 1, three]
true
one 1 three 
 
Set:無序、元素唯一
HashSet:底層是Hash表
保證元素唯一:通過hashcode和equals方法
對於HashSet來說,判斷元素是否存在,或者刪除元素,都是靠hashcode和equals方法
對於ArrayList來說,判斷元素是否存在或者刪除元素都是靠equals方法
TreeSet:底層是二叉樹,能自動排序。
其能自動排序,依據就是compareTo方法,要求存入其中的元素具有可比較性
其中比較的方法有兩種:
1.類implements Comparable接口,重寫compareTo方法
2.更靈活的方式:讓TreeSet本身具有可比較性,構造中傳入一個Comparator的對象,重寫compare方法
下面一段代碼用於說明HashSet

package day09;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class TestHashSet {
public static void main(String[] args) {
//      初始化HashSet帶有泛型String類型,數據都為String類型
Set<String> set =  new HashSet<String>();
//      向set對象中添加元素
set.add("one");
set.add("two");
set.add("one");
set.add("three");
set.add("four");
set.add("five ");
set.add("five ");
//      輸出的時候去重復但是無序
System.out.println(set);
//      前面說到的迭代器
Iterator<String> it = set.iterator();
while(it.hasNext()){
String s = it.next();
System.out.print(s+" ");
}
System.out.println();
//  foreach循環  格式:for(元素類型 變量名:集合對象/數組對象){}
for(String s : set){
//          底層就是Iterator迭代器
System.out.print(s+" ");
}
}
}

對於TreeSet和HashSet用法基本相同只需要把上面代碼中的所有HashSet換成TreeSet即可。並且可以完成自動排序
輸出結果:
[one, two, five , four, three]
one two five  four three
one two five  four three

Copyright © Linux教程網 All Rights Reserved