import java.io.*;
import java.util.*;class MM<T>
{
private T name;
public MM(T name)
{ setName(name); }
public void setName(T name)
{ this.name=name; }
public T getName()
{ return this.name; }
public String toString()
{ return "The MM's name is "+this.name.toString(); }
}
public class GenericsDemo30
{
public static final int quantities=5;
public static void main(String[] args) throws IOException
{
Collection co1=new ArrayList();
String name="";
BufferedReader br=null;
//创建
for(int i=0;i<quantities;i++)
{
br=new BufferedReader(new InputStreamReader(System.in));
name=br.readLine();
MM mm=new MM(name);
co1.add(mm);
}
//输出
Iterator iter=co1.iterator();
while(iter.hasNext())
{
System.out.println(iter.next());
}
//删除
iter=co1.iterator();
System.out.println("输入想要移除的名字:");
br=new BufferedReader(new InputStreamReader(System.in));
name=br.readLine();
MM tmp=new MM(name);
while(iter.hasNext())
{
if(iter.next().getName()==tmp.getName())//The method getName() is undefined for the type Object... 提示Object里面没有这个方法,但删除元素不知道该怎么操作,求前辈们指点
{
System.out.println("找到该mm");
iter.remove();
iter=co1.iterator();
}
else
{
System.out.println("找不到该mm,删除失败");
iter=co1.iterator();
break;
}
}
//输出
while(iter.hasNext())
{
System.out.println(iter.next());
}
iter=co1.iterator();
}}另外请教一下,在使用Collection时存储对象的时候,这种写法是否略显笨拙,前辈们提点一下
{
System.out.println(iter.next());
}你是想删除所有的元素?
用ArrayList.clear()方法就可以了,如果想要手动删除,也可以如下:
while (!list.isEmpty()) {
list.removeElementAt(0);
}
public class IteratorRemovalDemo {
private static final Scanner SCANNER = new Scanner(System.in);
// 程序入口
public static void main(String[] args) {
List<String> girls = inputGirls();
String girlName = prompt("Girl's name to be removed:");
removeGirlByName(girls, girlName);
}
/**
* 用户输入 MM 名字
*
* @return MM 名字列表
*/
private static List<String> inputGirls() {
List<String> girls = new ArrayList<String>();
String name;
do {
name = prompt("Enter a girl's name(press enter to finish):");
if (!name.equals("")) {
girls.add(name);
}
} while (!name.equals(""));
return girls;
}
/**
* 提示用户输入
*
* @param message 提示信息
*
* @return 用户输入
*/
private static String prompt(String message) {
System.out.print(message);
return SCANNER.nextLine().trim();
}
/**
* 从 MM 列表中删除指定的名字
*
* @param girls MM列表
* @param girlName 要删除的名字
*/
private static void removeGirlByName(List<String> girls, String girlName) {
Iterator<String> girlsIterator = girls.iterator();
while (girlsIterator.hasNext()) {
String name = girlsIterator.next();
if (name.equals(girlName)) {
girlsIterator.remove();
System.out.println("\"" + girlName + "\" has been removed.");
}
}
}
}
改成这样子 但是提示没有定义getName()方法0.0
要怎么做
at GenericsDemo30.main(GenericsDemo30.java:48)
QAQ 为神摸
import java.util.*;class MM<T> {
private T name; public MM(T name) {
System.out.println("构造方法执行");
setName(name);
}
public void setName(T name) {
System.out.println("setName方法执行");
this.name = name;
} public T getName() {
System.out.println("getName方法执行");
return this.name;
} public String toString() {//重写了toString方法,当执行的时候会执行
System.out.println("toString()方法执行2222");
return "The MM's name is " + this.name.toString();
}
}public class GenericsDemo30 {
public static final int quantities = 5; public static void main(String[] args) throws IOException {
Collection co1 = new ArrayList();
String name = "";
BufferedReader br = null;
// 创建
for (int i = 0; i < quantities; i++) {
br = new BufferedReader(new InputStreamReader(System.in));
name = br.readLine();
MM mm = new MM(name);
//System.out.println("++++++++++++++++++"+mm);
co1.add(mm);
}
// 输出/////////---------------------------------------------
Iterator iter = co1.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
// 删除
iter = co1.iterator();
System.out.println("输入想要移除的名字:");
br = new BufferedReader(new InputStreamReader(System.in));
name = br.readLine();
MM tmp = new MM(name);
while (iter.hasNext()) {
String a=(String) ((MM) iter.next()).getName();
String b=tmp.getName().toString();
if (a.equals(b))// The method
// getName() is
// undefined for
// the type
// Object...
// 提示Object里面没有这个方法,但删除元素不
{
System.out.println("找到该mm");
iter.remove();
iter = co1.iterator();
break;
} else {
System.out.println("找不到该mm,删除失败");
iter = co1.iterator();
break;
}
}
// 输出
while (iter.hasNext()) {
System.out.println(iter.next());
}
iter = co1.iterator();
}}
import java.util.*;class MM<T> {
private T name; public MM(T name) {
System.out.println("构造方法执行");
setName(name);
}
public void setName(T name) {
System.out.println("setName方法执行");
this.name = name;
} public T getName() {
System.out.println("getName方法执行");
return this.name;
} public String toString() {//重写了toString方法,当执行的时候会执行
System.out.println("toString()方法执行2222");
return "The MM's name is " + this.name.toString();
}
}public class GenericsDemo30 {
public static final int quantities = 5; public static void main(String[] args) throws IOException {
Collection co1 = new ArrayList();
String name = "";
BufferedReader br = null;
// 创建
for (int i = 0; i < quantities; i++) {
br = new BufferedReader(new InputStreamReader(System.in));
name = br.readLine();
MM mm = new MM(name);
//System.out.println("++++++++++++++++++"+mm);
co1.add(mm);
}
// 输出/////////---------------------------------------------
Iterator iter = co1.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
// 删除
iter = co1.iterator();
System.out.println("输入想要移除的名字:");
br = new BufferedReader(new InputStreamReader(System.in));
name = br.readLine();
MM tmp = new MM(name);
while (iter.hasNext()) {
String a=(String) ((MM) iter.next()).getName();
String b=tmp.getName().toString();
if (a.equals(b))// The method
// getName() is
// undefined for
// the type
// Object...
// 提示Object里面没有这个方法,但删除元素不知道该怎么操作,求前辈们指点
{
System.out.println("找到该mm");
iter.remove();
iter = co1.iterator();
break;
} else {
System.out.println("找不到该mm,删除失败");
iter = co1.iterator();
break;
}
}
// 输出
while (iter.hasNext()) {
System.out.println(iter.next());
}
iter = co1.iterator();
}}
运行出来了,你试试吧
构造方法执行
setName方法执行
2
构造方法执行
setName方法执行
3
构造方法执行
setName方法执行
4
构造方法执行
setName方法执行
5
构造方法执行
setName方法执行
toString()方法执行2222
The MM's name is 1
toString()方法执行2222
The MM's name is 2
toString()方法执行2222
The MM's name is 3
toString()方法执行2222
The MM's name is 4
toString()方法执行2222
The MM's name is 5
输入想要移除的名字:
2
构造方法执行
setName方法执行
getName方法执行
getName方法执行
找不到该mm,删除失败
toString()方法执行2222
The MM's name is 1
toString()方法执行2222
The MM's name is 2
toString()方法执行2222
The MM's name is 3
toString()方法执行2222
The MM's name is 4
import java.io.*;
import java.util.*;class MM<T>
{
private T name;
public MM(T name)
{ setName(name); }
public void setName(T name)
{ this.name=name; }
public T getName()
{ return this.name; }
public String toString()
{ return "The MM's name is "+this.name.toString(); }
}
public class GenericsDemo30
{
public static final int quantities=5;
public static void main(String[] args) throws IOException
{
Collection co1=new ArrayList();
String name="";
BufferedReader br=null;
//创建
for(int i=0;i<quantities;i++)
{
br=new BufferedReader(new InputStreamReader(System.in));
name=br.readLine();
MM mm=new MM(name);
co1.add(mm);
}
//输出
Iterator iter=co1.iterator();
while(iter.hasNext())
{
System.out.println(iter.next());
}
//删除
iter=co1.iterator();
System.out.println("输入想要移除的名字:");
br=new BufferedReader(new InputStreamReader(System.in));
name=br.readLine();
MM tmp=new MM(name);
while (iter.hasNext()) {
String a=(String) ((MM) iter.next()).getName();
String b=tmp.getName().toString();
if (a.equals(b))// The method
{
System.out.println("找到该mm");
iter.remove();
iter = co1.iterator();
break;
} else {
{
System.out.println("找不到该mm,删除失败");
iter=co1.iterator();
break;
}
}
}
//输出
while(iter.hasNext())
{
System.out.println(iter.next());
}
iter=co1.iterator();
} }
结果是:
1
2
3
4
5
The MM's name is 1
The MM's name is 2
The MM's name is 3
The MM's name is 4
The MM's name is 5
输入想要移除的名字:
1
找到该mm
The MM's name is 2
The MM's name is 3
The MM's name is 4
The MM's name is 5
import java.util.*;class MM<T>
{
private T name;
public MM(T name)
{ setName(name); }
public void setName(T name)
{ this.name=name; }
public T getName()
{ return this.name; }
public String toString()
{ return "The MM's name is "+this.name.toString(); }
}
public class GenericsDemo30
{
public static final int quantities=5;
public static void main(String[] args) throws IOException
{
Collection co1=new ArrayList();
String name="";
BufferedReader br=null;
//创建
for(int i=0;i<quantities;i++)
{
br=new BufferedReader(new InputStreamReader(System.in));
name=br.readLine();
MM mm=new MM(name);
co1.add(mm);
}
//输出
Iterator iter=co1.iterator();
while(iter.hasNext())
{
System.out.println(iter.next());
}
//删除
iter=co1.iterator();
System.out.println("输入想要移除的名字:");
br=new BufferedReader(new InputStreamReader(System.in));
name=br.readLine();
MM tmp=new MM(name);
while (iter.hasNext()) {
String a=(String) ((MM) iter.next()).getName(); // System.out.println(a);
String b=tmp.getName().toString();
// System.out.println(b);
if (a.equals(b))// The method
{
System.out.println("找到该mm");
iter.remove();
iter = co1.iterator();
break;
} else {
System.out.println("继续寻找中-----");
}
}
//输出
while(iter.hasNext())
{
System.out.println(iter.next());
}
//iter=co1.iterator();
} }执行结果如下:
1
2
3
4
5
The MM's name is 1
The MM's name is 2
The MM's name is 3
The MM's name is 4
The MM's name is 5
输入想要移除的名字:
2继续寻找中-----找到该mm
The MM's name is 1
The MM's name is 3
The MM's name is 4
The MM's name is 5
啪啪啪,知道哪里错了0.0 while(iter.hasNext())
{
if(iter.next().getName()==tmp.getName())//这里不能比较0.0
{
System.out.println("找到该mm");
iter.remove();
iter=co1.iterator();
}
else//这个else一旦集合第一个元素不是改mm,就跳出去了0.0 后面就没找了233
{
System.out.println("找不到该mm,删除失败");
iter=co1.iterator();
break;
}
}