java修改list存儲對象
Ⅰ java中將list對象寫入文件
可以通過「FileOutputStream」創建文件實例,之後過「OutputStreamWriter」流的形式進行存儲list對象,舉例:
OutputStreamWriter pw = null;//定義一個流
pw = new OutputStreamWriter(new FileOutputStream(「D:/test.txt」),"GBK");//確認流的輸出文件和編碼格式,此過程創建了「test.txt」實例
pw.write(list);//將要寫入文件的內容,可以多次write
pw.close();//關閉流
備註:文件流用完之後必須及時通過close方法關閉,否則會一直處於打開狀態,直至程序停止,增加系統負擔。
Ⅱ java中使用ArrayList如何修改裡面的內容.
java里增強for循環【for(String a: arrayList)】裡面可以修改數據,但是不能刪除數據,如下例子:
<pre t="code" l="java">修改集合:
import java.util.ArrayList;
import java.util.List;
public class TestA {
public static void main(String[] args){
//集合
List<String> arrayList=new ArrayList<String>();
//存放元素
arrayList.add("hello");
arrayList.add("ninghao");
arrayList.add("bye");
//集合標量
int index=0;
//遍歷集合
for(String a:arrayList){
//輸出集合對象
System.out.println(a);
//修改集合對象
arrayList.set(index, "hi");
//標量加一
index++;
}
//輸出集合
System.out.println(arrayList);
}
}
結果:
hello
ninghao
bye
[hi, hi, hi]
刪除集合元素:
import java.util.ArrayList;
import java.util.List;
public class TestA {
public static void main(String[] args){
//集合
List<String> arrayList=new ArrayList<String>();
//存放元素
arrayList.add("hello");
arrayList.add("ninghao");
arrayList.add("bye");
//集合標量
int index=0;
//遍歷集合
for(String a:arrayList){
//輸出集合對象
System.out.println(a);
//刪除元素
arrayList.remove(index);
//標量加一
index++;
}
//輸出集合
System.out.println(arrayList);
}
}
結果:
hello
Exception in thread "main" java.util.
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at app.TestA.main(TestA.java:19)由以上例子可以看出,增強for循環,在循環里可以修改集合元素,但是不能刪除集合元素。
Ⅲ java反射如何獲取並修改list子對象
先判斷類型是否是list,然後用下面的代碼就可以獲取到list集合
Java code?
Method m = (Method) obj.getClass().getMethod("get" + getMethodName(field.getName())); List list = (List) m.invoke(obj);
Java code?private static String getMethodName(String fildeName) throws Exception{ byte[] items = fildeName.getBytes(); items[0] = (byte) ((char) items[0] - 'a' + 'A'); return new String(items); }
Ⅳ java里怎麼修改list記錄中的某個值
java中使用arraylist修改裡面的內容,可以使用set方法,拿到下標修改內容,如下代碼packagecom.qiu.lin.he;
- import<a href="https://www..com/s?wd=java.util&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-TLwGUv3ErHD4P1D1PWm"target="_blank"class="-highlight">java.util</a>.ArrayList;
- import<a href="https://www..com/s?wd=java.util&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-TLwGUv3ErHD4P1D1PWm"target="_blank"class="-highlight">java.util</a>.List;
- publicclassCeshi{
- publicstaticvoidmain(String[]args){
- List<String>list=newArrayList<String>();
- list.add("a");
- list.add("b");
- list.add("c");
- System.out.println("未修改前:");
- for(Strings:list){
- System.out.println(s);
- }
- list.set(0,"修改之後的元素");//修改對應的元素
- System.out.println("已修改後:");
- for(Strings:list){
- System.out.println(s);
- }
- }
- }
運行結果如下:
Ⅳ java中怎麼把以保存數據的list集合傳到別的類中操作進行增刪改查,
有好多方法啊,
1,可以在類中自定義構造函數,將list集合作為參數,在new對象的時候把集合傳進去。
2,可以在類中定義方法,將list集合作為參數,然後使用對象調用該方法,並把list集合作為實參傳進去。
list集合得到了,想怎麼增刪改查都可以了。
你說好幾個類共同操作一個集合,集合這個東西跟數組一樣,你把它作為實參傳過去,實際上並不是傳的集合對象本身,而是它的地址(或者是引用,可以這么理解),然後你在方法中操作集合,都是直接作用於集合本身而不是集合的值,也就是說你在方法內部操作傳進來的集合,跟在外面直接操作集合是一個效果。這跟普通的變數不一樣,普通的變數是值傳遞,你在方法內部操作一個變數只是在操作值,原來的變數還在那裡不會改變。
所以說好幾個類共同操作一個list集合,只需要分別把這個list集合傳遞到各個類中就可以了。
publicclassAnswer{
publicstaticvoidmain(String[]args){
Listlist=newArrayList();
Aaaa=newAaa(list);
Bbbb=newBbb();
//調用對象中的方法操作list集合
a.funA();
b.funB(list);
}
}
classAaa{
Listlist;
publicAaa(){};
publicAaa(Listlist){
this.list=list;
}
//定義處理list集合的方法
public...funA(){
//操作list集合
...
}
}
classBbb{
//定義處理list集合的方法
public...(Listlist){
//操作list集合
...
}
}
Ⅵ java里怎樣用list存儲對象
List<泛型> list = new ArrayList<泛型>();
list.add(泛型object);
e.g.
List<String> list = new ArrayList<String>();
String str = new String("aaaa");
list.add(str);
Ⅶ java如何將1個list存入緩存中並在緩存在修改數據
publicclassTest2{
publicstaticvoidmain(String[]args){
try{
List<String>list=newArrayList<>();
//模擬傳過來的值
inti=0;
while(true){
Longtime=newDate().getTime();
//將當前時間與值拼接成字元串保存到list
list.add("value"+i+","+time);
//調用處理方法
processing(list);
i++;
//模擬每次傳入的時間長度
Thread.sleep(3000);
}
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicstaticvoidprocessing(List<String>list){
//第一個存入的值
Stringsrc1=list.get(0);
//最後一個存入的值
Stringsrc2=list.get(list.size()-1);
//通過轉換成數組
String[]c1=src1.split(",");
String[]c2=src2.split(",");
//拿到第一個存入的時間字元串轉換成Long
Longl1=Long.parseLong(c1[1]);
//拿到最新的時間字元串轉換成Long
Longl2=Long.parseLong(c2[1]);
//如果大於等於30000毫秒就說明了過了30秒清空
if((l2-l1)>=30000){
list.clear();
}
System.out.println("每次的值"+src2);
System.out.println("是否30秒清空"+(list.size()==0));
}
}
/*******************************第二種方式*************************************/
publicclassTest2{
//定義一個全局變數用於接收時間
privatestaticLongtime=0L;
publicstaticvoidmain(String[]args){
try{
List<String>list=newArrayList<>();
//模擬傳過來的值
inti=0;
while(true){
//如果list是在清空狀態那麼就創建個時間為第一次時間
if(list.size()==0){
time=newDate().getTime();
}
//將字元串保存到list
list.add("value"+i);
//調用處理方法,沒次傳入一個當前存入對象的時間
processing(list,newDate().getTime());
i++;
//模擬每次傳入的時間長度
Thread.sleep(3000);
}
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
publicstaticvoidprocessing(List<String>list,Longtimes){
//當前時間-第一次存入的時間大於等於30000毫秒
//就是過了30秒執行清空操作
if((times-time)>=30000){
list.clear();
}
for(Stringls:list){
System.out.println("每次的值"+ls);
}
System.out.println("是否30秒清空"+(list.size()==0));
}
}
我沒有redis 只能模擬一個 你看下 其實 你就多了一步 從緩存中取值 判斷不能 等於 30000毫秒 因為 時間會有所偏差 可能大於 所以 大於等於,你要是覺得 毫秒太長你可以 轉換成秒存入 在計算
第二種 的話 你的程序 可能不需要太大改掉