真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

list代碼java,list程序

Java的List如何實(shí)現(xiàn)線程安全?

解決這個(gè)問題通常有兩種方法(個(gè)人認(rèn)為)

成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司一直秉承“誠(chéng)信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!專注中小微企業(yè)官網(wǎng)定制,網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作,塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。

一:使用synchronized關(guān)鍵字,這個(gè)大家應(yīng)該都很熟悉了,不解釋了;

二:使用Collections.synchronizedList();使用方法如下:

假如你創(chuàng)建的代碼如下:ListMapString,Object data=new ArrayListMapString,Object();

那么為了解決這個(gè)線程安全問題你可以這么使用Collections.synchronizedList(),如:

ListMapString,Object data=Collections.synchronizedList(new ArrayListMapString,Object());

其他的都沒變,使用的方法也幾乎與ArrayList一樣,大家可以參考下api文檔;

額外說(shuō)下 ArrayList與LinkedList;這兩個(gè)都是接口List下的一個(gè)實(shí)現(xiàn),用法都一樣,但用的場(chǎng)所的有點(diǎn)不同,ArrayList適合于進(jìn)行大量的隨機(jī)訪問的情況下使用,LinkedList適合在表中進(jìn)行插入、刪除時(shí)使用,二者都是非線程安全,解決方法同上(為了避免線程安全,以上采取的方法,特別是第二種,其實(shí)是非常損耗性能的)。

怎樣用Java編寫一個(gè)list

import java.util.Iterator;

public class MyArrayList {

Object[] arr;

int size=0;

public MyArrayList(){

this(10);

}

public MyArrayList(int R){

arr=new Object[R];

}

public int size() {

return size;

}

public void add(Object obj){

if(arr.length=size+1){

arr[size]=obj;

size++;

}else{

int i=arr.length*3/2+1;

Object[] a2=new Object[i];

System.arraycopy(arr,0,a2,0, size);

a2[size]=obj;

size++;

arr=a2;

}

// if(arr.lengthsize+1){

// Object[] a=new Object[size*3/2+1];

// System.arraycopy(arr, 0, a, 0, size);

// arr=a;

// }

// arr[size]=obj;

// size++;

//}

}

public Object get(int i){

if(i0||i=size){

throw new ArrayIndexOutOfBoundsException(i);

}else{

return arr[i];

}

}

public Object set(int i,Object obj){

if(i0||i=size){

throw new ArrayIndexOutOfBoundsException(i);

}else{

size++;

Object o=arr[i];

for(int j=size-1;ji;j--){

arr[j]=arr[j-1];

}

arr[i]=obj;

return o;

}

}

public Object remove(int i){

if(i0||i=size){

throw new ArrayIndexOutOfBoundsException(i);

}else{

Object o=arr[i];

for(int j=i;jsize-1;j++){

arr[j]=arr[j+1];

}

size--;

// System.arraycopy(arr, i+1, arr, i,size-(i+1));

// arr[--size]=null;

return o;

}

}

public Iterator iterator(){

return new MyIterator();//創(chuàng)建迭代器并以父接口類型返回

}

private class MyIterator implements Iterator{//在內(nèi)部類中可以不

int index=0;

public boolean hasNext(){

return indexsize;

}

public Object next(){

return arr[index++];

}

public void remove(){

MyArrayList.this.remove(index);//內(nèi)部類調(diào)用外部類的方法

}

}

}

//注釋為可替換代碼

java把一個(gè)list中的內(nèi)容添加到另一個(gè)list中

在JAVA中,想要把一個(gè)list中的內(nèi)容添加至另一個(gè)list中,有兩種方法:

采用循環(huán)的方法。通過(guò)循環(huán)第一個(gè)ArrayList,然后通過(guò)每循環(huán)一次的方式,將值賦值給另一個(gè)ArrayList。具體代碼實(shí)現(xiàn)如下:

2.采用ArrayList自帶的addAll()方法。addAll()方法是通過(guò)傳入整一個(gè)List,將此List中的所有元素加入到新的List中,也就是當(dāng)前List會(huì)增加的元素個(gè)數(shù)等于傳入的List的大小。該方法較為簡(jiǎn)單,具體代碼實(shí)現(xiàn)如下:

拓展資料:

1.List.add() 和 List.addAll() 的區(qū)別:

(1)List.add() 方法,也是往List 中增加list,但是,它增加的是一個(gè)List?實(shí)例。如果,往容器中增加的那個(gè)List 實(shí)例從數(shù)據(jù)庫(kù)中查到的結(jié)果有5條,不過(guò),如果使用了List.add(list1);程序只會(huì)輸出一條記錄。原因就是上面說(shuō)的。List.add()?加List 實(shí)例,它會(huì)把這個(gè)看一個(gè)實(shí)例,而不是把那個(gè)看成一個(gè)容器。

(2) 例如:List.add(list1),List.add(list2);List.add(list3),??這時(shí),List.size 它的大小是3。

(3)List.add()?的含義就是:你往這個(gè)List 中添加對(duì)象,它就把自己當(dāng)初一個(gè)對(duì)象,你往這個(gè)List中添加容器,它就把自己當(dāng)成一個(gè)容器。

(4)List.addAll()方法,就是規(guī)定了,自己的這個(gè)List 就是容器,往里面增加的List 實(shí)例,增加到里面后,都會(huì)被看成對(duì)象。

(5) 這時(shí):List.add(list1),List.add(list2);List.add(list3),??這時(shí),List.size 它的大小就是所有l(wèi)ist 實(shí)例化后的總數(shù)和總的記錄數(shù)。

2.集合是Java API所提供的一系列類,可以用于動(dòng)態(tài)存放多個(gè)對(duì)象。集合與數(shù)組的不同在于,集合是大小可變的序列,而且元素類型可以不受限定,只要是引用類型。集合中不能放基本數(shù)據(jù)類型,但可以放基本數(shù)據(jù)類型的包裝類。 集合類全部支持泛型,是一種數(shù)據(jù)安全的用法。java列表是集合的一種,并且列表中的元素是有序的,且允許重復(fù)。java列表又稱為java list。

參考資料:Java List_百度百科

JAVA程序利用List編寫隊(duì)列結(jié)構(gòu),求簡(jiǎn)易代碼

package list;

import java.util.ArrayList;

//這是關(guān)于List用法,代表性的有LinkedList,ArrayList,Vector用法類似

public class ArrayListTest {

/**

* @param args

*/

public static void main(String[] args) {

ArrayListString list = new ArrayListString();

//添加

list.add("三國(guó)演義");

list.add("西游記");

list.add("水滸傳");

list.add("紅樓夢(mèng)");

//修改

list.set(0, "三國(guó)志");

//查詢某個(gè)元素是否存在

boolean flag = list.contains("西游記");

System.out.println(flag);

//刪除

list.remove(2);//list.remove("水滸傳");

//遍歷

int size = list.size();

for ( int i=0; isize; i++)

{

String str =(String)list.get(i);//得到某個(gè)位置的元素

System.out.println(str);

}

}

}

////////////////////////下面是排序的

package list;

import java.util.ArrayList;

import java.util.Collections;

//這是關(guān)于List用法,代表性的有LinkedList,ArrayList,Vector用法類似

//排序

//Collections可以排序,還可以得到最大,最小數(shù)值,還可以將集合反轉(zhuǎn)

public class SortListTest {

/**

* @param args

*/

@SuppressWarnings("unchecked")

public static void main(String[] args) {

ArrayList list = new ArrayList();

//添加

list.add(45);

list.add(67);

list.add(87);

list.add(23);

list.add(67);

Collections.sort(list);//升序

//Collections.sort(list,Collections.reverseOrder());//降序

//遍歷

int size = list.size();

for ( int i=0; isize; i++ )

{

Integer str =(Integer)list.get(i);//得到某個(gè)位置的元素

System.out.println(str);

}

}

}


當(dāng)前標(biāo)題:list代碼java,list程序
轉(zhuǎn)載來(lái)于:http://weahome.cn/article/dssicgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部