⑴ java遍历list 并删除相同值对象
用一个for循环遍历List时,不能删除其中的元素。
用Iterator操作即可。
还有 Pro类要重写一下 toString方法。这样System.out.println里才能打印出来。
import java.util.*;
public class ListTest {
public static void main(String[] args) {
List<Pro> list = new ArrayList();
Pro p1 = new Pro("1000","1000");
Pro p2 = new Pro("1001","1002");
Pro p3 = new Pro("1003","1004");
Pro p4 = new Pro("1005","1006");
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
for (Iterator<Pro> i = list.iterator(); i.hasNext();) {
Pro o = i.next();
if(o.getProid().equals(o.getProName())){
i.remove();
}
}
System.out.println(list);
}
}
class Pro{
private String proid;
private String proName;
public String getProid() {
return proid;
}
public void setProid(String proid) {
this.proid = proid;
}
public String getProName() {
return proName;
}
public void setProName(String proName) {
this.proName = proName;
}
public Pro(String proid, String proName) {
super();
this.proid = proid;
this.proName = proName;
}
public Pro() {
}
public String toString() {
return proid + ":" + proName;
}
}
⑵ Java里的对象在程序结束后会被立刻清除吗
虚拟机销毁对象是随机的,不可预测的,没有办法强制销毁;
System.gc()只是通知虚拟机可以进行销毁了,销不销毁都是看虚拟机,它自己并不会做什么清除的工作;
fianlise()方法只是当虚拟机在清除对象之前调用,人为控制不了;
总之一句话,销毁对象完全由虚拟机控制,程序员能做的就是通知虚拟机可以销毁了,但不能控制。
⑶ JAVA,servlet页面里怎样清除存在session中的某一个对象
HttpSession ht=req.getSession(true);
session的删除:版
//从session中删权除user属性
//ht.removeAttribute(要删除的attribute的name);
ht.removeAttribute("user");
⑷ c++ c# java鍒涘缓鍜屽垹闄ゅ硅薄鐨勫尯鍒
銆愬師鍒涖
杩欎釜鏄鎴戣嚜宸卞啓鐨勬荤粨閲岀殑涓閮ㄥ垎锛屾憳鍑烘潵浜嗭紝鏈鏉ュ啓鐨勬槸鎵鏈夌殑鍒濆嬪寲鎬荤粨锛屽寘鎷鍙橀噺銆傚洜涓轰綘闂鐨勬槸鏋勯犲拰鏋愭瀯锛屾墍浠ュ氨鎽樹簡涓閮ㄥ垎銆
=====鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟鐨勮皟鐢ㄩ『搴=====
璁ㄨ鸿繖涓闂棰樻槸寰堟湁鎰忎箟鐨勶紝鏇村叧閿鐨勬槸锛屽紕娓呮欳++鍜孞AVA閲屾瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟鐨勮皟鐢ㄩ『搴忓悗锛屽氨浼氭繁鍒绘劅瑙夊埌鍏跺疄闈㈠悜瀵硅薄鏄鏍囧噯锛岃孋++鍜孞AVA鏄鎸夌収杩欎釜鏍囧噯鐨勪笉鍚岀殑鎵ц岃咃紝
鎴栬呰达紝闈㈠悜瀵硅薄鏄涓涓绫伙紝鑰孋++鍜孞AVA鏄杩欎釜绫荤殑涓や釜瀵硅薄~~~
濂戒簡锛屼笉搴熻瘽浜嗭紝璇存d簨锛
褰撴垜浠鐪嬪埌涓涓瀵硅薄锛屽彲鏄杩欎釜瀵硅薄鐨勭被鏄鏄涓澶ф5缁ф壙鏍戜腑鐨勪竴鍛橈紝鑰屼笖姣忎釜缁ф壙鑰呴噷杩樻湁濂藉氱粍鍚堢殑瀛愬硅薄锛
鏁颁竴鏁帮紝浼拌′篃宸涓嶅氬埌浜嗙浜屻佷笁鍗佷唬鎺岄棬浜嗭紝閭f垜鍒涘缓璇ョ被鐨勪竴涓瀵硅薄鏃讹紝杩欎簺鏋勯犲拰鍒濆嬪寲椤哄簭
鏄鎬庢牱鐨勶紵涓嶈佹儕鎱岋紝鍏跺疄鍙鏄涓涓鏈绠鍗曠殑瑙勫垯锛
瀵逛竴涓绫绘潵璇达紝鎬绘槸鏈変袱姝ワ紝
绗涓姝ワ紝鍒濆嬪寲绫婚噷鐨勬暟鎹鎴愬憳锛
绗浜屾ワ紝璋冪敤绫荤殑鏋勯犲櫒锛
鏄涓嶆槸寰堢畝鍗曪紵浣嗘敞鎰忥紝鐜板湪璁ㄨ虹殑涓滆タ鍙涓嶅寘鍚玸tatic绫诲瀷鐨勬垚鍛橈紝static鎴愬憳鐨勪紭鍏堢骇鍙鏄楂樹簡鍘讳簡锛
杩瀖ain鍑芥暟閮借繕娌¤繘灏卞厛鍒濆嬪寲浜嗭紝鍥犱负杩欎簺涓滆タ涓嶄細鍥犱负绫诲硅薄鐨勫垱寤鸿屽垱寤猴紝鏄鍦ㄦ暣涓绋嬪簭杩愯屽墠
灏卞湪闈欐佹暟鎹鍖洪噷鍒嗛厤濂戒簡锛
濂斤紝鐜板湪璇磋翠笂闈㈢殑涓や釜姝ラわ紝
杩欎袱涓姝ラよ窡C++杩樻槸JAVA鏄娌℃湁鍏崇郴鐨勶紝鍙瑕佹槸闈㈠悜瀵硅薄鐨勮瑷锛岄兘閬靛惊杩欎釜瑙勫垯锛
绗涓姝ワ紝绫婚噷鐨勬暟鎹鎴愬憳锛屼緥濡 int i;C++鍜孞AVA閮芥槸杩欎箞瀹氫箟鐨勶紝
浣咼AVA鏈夌偣涓嶅悓锛屽彲浠ュ啓鎴恑nt i = 9;鍦–++閲岃繖涔堜竴鍐欏氨缂栬瘧鍑洪敊浜嗭紝
閭C++閲屾庝箞鎵嶈兘杈惧埌int i=9杩欐牱涓涓鏁堟灉鍛锛
杩樿板緱涓婇潰璁ㄨ虹殑鍒濆嬪寲鍒楄〃鍚楋紝鐜板湪鍐嶆妸渚嬪瓙鍐欒︾粏鐐癸紝
JAVA鐗堟湰鐨勶細
class C
{
int i = 9;
char c;
}
C++鐗堟湰鐨勶細
class C
{
int i;
char c;
public:
C() : i(9) {}
};
璁╂垜浠鐪嬬湅杩欎袱涓鐗堟湰绋嬪簭鐨勪笉鍚岋紝
JAVA鐗堟湰閲屽畾涔変簡i鍜宑锛屼絾i缁欎簡涓鍒濆9锛岃宑娌℃湁锛
C++鐗堟湰閲屼篃瀹氫箟浜唅鍜宑锛屼絾鍦ㄥ垵濮嬪寲鍒楄〃閲岀粰浜唅鍒濆硷紝鑰宑娌℃湁锛
鍙戠幇绫讳技鐐逛簡涔堬紝鍏跺疄C++鐨勫垵濮嬪寲鍒楄〃骞朵笉鏄璁捐¤呯獊鍙戝囨兂鎯冲紕涓杩欑嶈娉曞嚭鏉ョ帺鐜╋紝
C++杩欐牱鍋氫笉灏变负浜嗚揪鍒拌祴涓鍒濆肩殑鐩鐨勪箞锛屾垨鑰呰碕AVA鐪嬪埌C++寮勮繖涔堝嶆潅锛屾墍浠ュ氨鏉ヤ釜绠鍖栫偣鐨勶紝
濂斤紝鍒版や负姝锛屾垜浠宸茬粡寮勬竻妤氱涓涓姝ラや簡锛屾垚鍛樺彉閲忕殑鍒濆嬪寲锛屼篃灏辨槸璇村湪绫诲垱寤烘椂锛岃繘鍏ユ瀯閫犲櫒
涔嬪墠锛屽厛鎶婃垚鍛樺彉閲忓仛涓涓鍒濆嬪寲锛岃繖涓鍒濆嬪寲杩囩▼灏辨槸浠g爜涔﹀啓鑰呭畾鐨勶紝鎴戜滑缁欏摢浜涘彉閲忚祴浜嗗垵鍊硷紝
杩愯屾椂灏辩粰鍝浜涘彉閲忚祴鍒濆硷紝鍙鏄涓ょ嶈瑷璧嬪垵鍊肩殑鏂瑰紡涓嶅悓鑰屽凡锛
绗浜屾ワ紝璋冪敤鏋勯犲櫒锛
杩欏洖瑕佹潵涓鏇村嶆潅鐐圭殑浠g爜锛
JAVA鐗堟湰鐨勶紝
class Parent
{
public Parent(){}
public Parent(int i){}
}
class Child : extends Parent
{
int i;
public Child() {}
}
C++鐗堟湰鐨勶紝
class Parent
{
public:
Parent(){}
Parent(int i){}
};
class Child : public Parent
{
int i;
public:
Child(){}
};
杩欐椂鍒涘缓涓涓狢hild瀵硅薄锛屽皢鍙戠敓浠涔堜簨鎯咃紵鎴戜滑骞舵病鏈夎皟鐢ㄥ熀绫荤殑鏋勯犲嚱鏁帮紝浣嗗疄闄呬笂缂栬瘧鍣ㄥ凡缁忕粰鎴戜滑璋冪敤浜
鍩虹被閭d釜榛樿ょ殑鍗虫病鏈変换浣曞嚱鏁扮殑鏋勯犲嚱鏁颁簡锛屾敞鎰忎负浠涔堟垜浠瑕佷负Parent绫诲啓涓や釜鏋勯犲嚱鏁帮紝鍥犱负鍙瑕佸畾涔夎繃
鏋勯犲嚱鏁帮紝缂栬瘧鍣ㄥ氨涓嶄細鑷鍔ㄧ敓鎴愰粯璁ゆ瀯閫犲嚱鏁颁簡锛屾墍浠ユ垜浠蹇呴』鎶婇粯璁ら偅涓涔熸樉寮忕殑鍐欏嚭鏉ワ紝
濡傛灉鎴戜滑鏄惧紡鐨勮皟鐢ㄦ瀯閫犲嚱鏁板憿锛
渚嬪傚湪JAVA鐗堟湰鐨凜hild鏋勯犲嚱鏁扮涓鍙ラ噷鍐檚uper(5)锛
鎴栬呭湪C++鐗堟湰鐨凜hild鐨勫垵濮嬪寲鍒楄〃閲屽啓Parent(5)锛
杩欏張鍙戠敓浠涔堜簨鎯咃紵姝ゆ椂缂栬瘧鍣ㄥ氨涓嶄細缁欐垜浠璋冪敤鍩虹被閭d釜榛樿ゆ瀯閫犲嚱鏁帮紝鍥犱负鎴戜滑璋冪敤杩囦簡锛
杩欎釜浼间箮寰堟竻妤氫簡锛
瀵笴++鏉ヨ达紝鎴戜滑鍙浠ュ湪鍒濆嬪寲鍒楄〃閲屾樉寮忕殑鎸囧畾瑕佽皟鐢ㄥ摢涓鏋勯犲嚱鏁帮紝濡傛灉涓嶆寚瀹氾紝鍒欏熀绫婚粯璁ら偅涓灏嗚璋冪敤锛
瀵笿AVA鏉ヨ达紝鎴戜滑涔熷彲浠ュ湪鏋勯犲嚱鏁扮殑绗涓鍙ラ噷鏄惧紡鐨勬寚瀹氳佽皟鐢ㄥ熀绫荤殑鍝涓鏋勯犲嚱鏁帮紝鍚﹀垯缂栬瘧鍣ㄤ娇鐢ㄩ粯璁ょ殑锛
寰堟竻妤氫簡鍚э紵浣咰++鍜孞AVA鐨勭暐寰鏈夌偣涓嶅悓锛屽洜涓篊++鏈変釜鍒濆嬪寲鍒楄〃锛岃繖鏄璺熸瀯閫犲嚱鏁板畬鍏ㄧ嫭绔嬬殑涓滆タ锛
鎴戜滑涓嶄細鎶婁簩鑰呮贩璧锋潵锛屽洜涓烘垜浠閮界煡閬擄紝鍦ㄨ繘鍏ユ瀯閫犲嚱鏁颁箣鍓嶏紝鍒濆嬪寲鍒楄〃閲岀殑涓滆タ宸茬粡琚鎵ц岃繃浜嗭紝鍖呮嫭
鍩虹被鐨勬瀯閫犲嚱鏁扮殑璋冪敤锛屽彲JAVA灏变笉涓鏍蜂簡锛岃繖鍩虹被鐨勬瀯閫犲嚱鏁拌皟鐢ㄦ庝箞瑕佸埌鏋勯犲櫒閲屽幓璋冪敤鍛锛岃繖涔熸槸鍒濆嬪寲鐨
涓閮ㄥ垎鍟婏紝杩欐椂瑕佹兂璧蜂竴涓涓滆タ锛欽AVA瑙勫畾锛屽傛灉瑕佹寚瀹氬瑰熀绫荤殑鏋勯犲櫒鐨勮皟鐢锛岃繖涓璇鍙ヤ竴瀹氬彧鑳藉啓鍦ㄦ瀯閫犲櫒
鍑芥暟閲岀殑绗涓鍙ワ紝濂戒綘涓涓滀笢锛屽綋鏃跺垵鐪婮AVA杩樼湡濂囨浜嗭紝鎬庝箞浼氭湁杩欐牱涓涓瑙勫畾锛
鐜板湪鏄庣櫧浜嗗惂锛屽洜涓篔AVA娌℃湁鍒濆嬪寲鍒楄〃杩欑嶄笢瑗匡紝鎵浠ュ彧鑳芥斁鍒版瀯閫犲櫒閲屼簡锛岃屽瑰熀绫绘瀯閫犲櫒鐨勮皟鐢ㄦ槸瑕佸彂鐢
鍦ㄦ垚鍛樺彉閲忕殑鍒濆嬪寲涔嬪悗锛屽強瀛愮被鏋勯犲櫒鐨勬墽琛屼箣鍓嶏紝鎵炬潵鎵惧幓锛屼篃鍙鏈夎繖涓浣嶇疆鏈鍚堥備簡~~~
濂戒簡锛岀幇鍦ㄥ规瀯閫犲櫒鐨勮皟鐢ㄥ緢娓呮氫簡锛
浣嗗规垚鍛樺彉閲忕殑鍒濆嬪寲杩樿佸啀璇翠竴涓嬶紝
濡傛灉鎴戝畾涔夌殑鏃跺欏啓鎴
int i;
char c;
浣嗘槸鎴戝湪鍒濆嬪寲鍒楄〃閲屽啓鐨勬槸
c('a'),i(9)
涔熷氨鏄璇村垵濮嬪寲鍒楄〃鍐欑殑椤哄簭鍜屽彉閲忛『搴忎笉涓鏍凤紝鏀惧績锛屽垵濮嬪寲杩囩▼鏄鎸夌収瀹氫箟鐨勯『搴忔潵鍐欑殑锛
瀹氫箟鏃舵槸鍏堝畾涔塱鎵嶅畾涔塩锛屽垯缂栬瘧鍣ㄧ紪璇戞椂姘歌繙鍙浼氬厛鍒濆嬪寲i鍚庡垵濮嬪寲c锛
鍒濆嬪寲鍒楄〃閲岀殑椤哄簭鏃犳墍璋擄紝鍙鏄鍛婅瘔缂栬瘧鍣锛岃繖浜涘彉閲忔槸鏈夊垵鍊肩殑锛屼粎姝よ屽凡~~
鍚屾牱锛屾妸瀵瑰熀绫绘瀯閫犲櫒鐨勮皟鐢ㄥ拰鎴愬憳鍙橀噺鍒濆肩殑瀹氫箟涔熷彲浠ユ墦涔憋紝涓嶄細寮曡捣闂棰橈紝
缂栬瘧鍣ㄤ細瀵绘壘鍦ㄥ垵濮嬪寲鍒楄〃閲屾湁娌℃湁鎴戜滑瀵瑰熀绫绘瀯閫犲櫒鐨勮皟鐢锛屾湁鐨勮瘽灏辫皟鐢ㄦ垜浠鎸囧畾鐨勶紝娌℃湁鍒
璋冪敤榛樿ょ殑锛岃繖璺熼『搴忔槸娌℃湁鍏崇郴鐨剘
濂斤紝涓嬮潰鎶婅繖涓ゆョ粨鍚堣捣鏉ワ紝鍦ㄤ竴妫电户鎵挎爲閲屾潵璁诧紝
褰撴垜浠鍒涘缓缁ф壙鏍戦噷绗琻浠f帉闂ㄧ殑瀵硅薄鏃讹紝
灏嗘寜鐓т笅闈㈢殑姝ラよ繘琛岋細
浠庣琻浠f帉闂ㄥ紑濮嬪悜涓婅拷婧锛屼竴鐩村埌鍒涙淳绁栧笀涔熷氨鏄鏈椤跺眰鐨勫熀绫伙紝
濂斤紝灏变粠杩欎釜绁栧笀寮濮嬶紝杩涜屾垚鍛樺彉閲忕殑鍒濆嬪寲鍜屾瀯閫犲櫒鐨勮皟鐢锛
褰撶劧锛屽熀绫荤殑鏋勯犲櫒鏄鐢卞瓙绫诲喅瀹氳皟鐢ㄧ殑锛屽傛灉瀛愮被娌℃湁璋冪敤鍩虹被鐨勬瀯閫犲櫒锛屽垯鍩虹被鐨勯粯璁ゆ瀯閫犲櫒灏嗚璋冪敤锛
鎸夌収缁ф壙鏍戦『搴忎緷娆″悜涓嬶紝
濡備笅鎻忚堪锛
鍒涙淳绁栧笀鐨勬垚鍛樺垵濮嬪寲瀹屼簡锛岀劧鍚庣湅绗涓浠f帉闂ㄦ湁娌℃湁鎸囧畾杩囪佽皟鐢ㄧ栧笀鐨勫摢涓鏋勯犲櫒锛
濡傛灉鎸囧畾浜嗭紝姝ゆ椂灏辫皟鐢ㄦ寚瀹氱殑閭d釜鏋勯犲櫒锛屽惁鍒欙紝灏辫皟鐢ㄧ栧笀鐨勯粯璁ょ殑閭d釜鏋勯犲櫒锛
鐒跺悗鍚戜笅锛
鍒颁簡绗涓浠f帉闂锛屽悓鏍凤紝鍏堝硅ユ帉闂ㄧ殑鎴愬憳鍙橀噺鍋氬垵濮嬪寲锛岀劧鍚庣湅绗浜屼唬鎺岄棬閭f湁娌℃湁鎸囧畾杩囪佽皟鐢ㄧ涓浠f帉闂
鐨勫摢涓鏋勯犲櫒锛屽傛灉鎸囧畾杩囷紝鍒欒皟鐢ㄧ涓浠f帉闂ㄨ鎸囧畾鐨勯偅涓鏋勯犲櫒锛屽惁鍒欙紝灏辫皟鐢ㄧ涓浠f帉闂ㄧ殑榛樿ゆ瀯閫犲櫒锛
鐒跺悗鍚戜笅锛
鍒颁簡绗浜屼唬鎺岄棬锛....
鐒跺悗鍚戜笅锛
鍒颁簡绗涓変唬鎺屼滑锛...
鐒跺悗鍚戜笅锛
鍒颁簡绗琻浠f帉闂ㄨ繖锛屽氨鏄绫籄锛屽厛鍒濆嬪寲A閲岀殑鎴愬憳锛岀劧鍚庤皟鐢ˋ鐨勬瀯閫犲櫒锛岃皟鐢ˋ鐨勫摢涓鏋勯犲櫒灏变笉鐢ㄨ翠簡鍚э紝
浠g爜閲屽彲鍐欏緱娓呮氬憿锛屼緥濡侫 a;鍒欒皟鐢ㄧ殑鏄榛樿ら偅涓锛孉 a(1,'b')锛屽垯璋冪敤鐨勬槸鍙﹀栦竴涓獈
杩欏氨鏄鏁翠釜杩囩▼锛
鑰屾瀽鏋勯『搴忓憿锛熺紪璇戝櫒璁板綍鐫鍒濆嬪寲鐨勯『搴忥紝
鏋愭瀯鏃朵笉绠′笁涓冧簩鍗佷竴锛屽氨鎸夌収鍒濆嬪寲鐨勯『搴忔潵鍙嶅悜渚濇¤皟鐢ㄦ瀽鏋勫櫒~~~~
⑸ 在Java中如何主动的去释放无用对象,从而使得系统GC可以尽早释放内存在编程上需要注意些什么
1、与C语言相比,垃圾回收器是JAVA的一大优势。其功能在于自动释放违背占用的内存,但何时去释放有其自身的算法,不支持使用者直接释放内存。
2、使用者所能做的只是使用System.gc()通知JAVA垃圾回收器在“合适”的时间逐个使用Object.finalize()清除未为程序引用的各个对象。
3、使用着调用Object的finalize()方法不会启动任何作用,只能是重写该方法执行写对象销毁前应做的操作,如关闭IO等。
4、使用者还可以做到的就是指定那些对象占用的内存会被释放,方法就是将对象的值赋为NULL。
5、编程用使用者应做的就是提高对象的复用性,尽量少的声明对象。
⑹ java for循环生成的对象,如何批量删除
从你给的代码中可以看出,五次循环中,new出的对象都是赋值给了mod这个变量,结束循环,mod的值就是最后一次new出的对象,你通过mod自然只能删除最后一个new出的对象,不管你调用mod.remove()多少次。
想要全部删除,这就要看你是否有对「5次循环中前4次生成的那些对象」的引用,比如放在了一个数组或者容器中,如果有,就可以遍历数组或者容器来删除,否则你无法删除,因为你都没有对它们的引用。
如果还需帮助,你可以把全部的代码粘贴出来看看~
⑺ java中如何显式删除对象
根据介绍Java的书籍的叙述,Java没有任何方式可以显式地删除一个对象(即Java没有提供任何办法让你能立即释放一个不使用的内存)。Java虚拟机有垃圾回收机制帮助管理内存,垃圾回收机制的原则是:如果一个内存地址没有被任何地方引用,则垃圾回收器会在运行的时候将它释放掉。
所以如果你要释放一个对象所占用的内存的话,只有一个办法:将这个对象的所有引用置为空,然后等待垃圾回收器下一次运行时将它回收掉。