我创建了一个arrayList,创建了一个getter类,并且创建了一个方法,在我想要做的方法中执行2次错误检查... 1如果值用户要添加已经添加了就在它发出错误之前。
例如,在列表中有苹果,香蕉......如果用户再次尝试添加香蕉,则会出错。
此外,如果列表包含2个相同的值,则java不应再允许添加该类型,并且应该提供错误。
感谢。
答案 0 :(得分:1)
您可以使用ArrayList.contains(object)方法检查ArrayList是否包含相同的对象,但听起来您想要检查对象的类型。我不会使用ArrayList。我将使用HashMap,为每种类型设置键,然后检查HashMap是否有使用HashMap.hasKey()方法的条目。如果绝对必须使用ArrayList,那么每次要添加内容并检查每个项目时,您将不得不遍历数组。
答案 1 :(得分:0)
第一个问题很简单。只需检查list.size() - 1,看看你想要添加的对象是否与前一个对象相同。
关于第二个问题,一种有效的方法是使用HashMap<String,Integer>
。每次向列表中添加一个对象时,看它是否已经存在于Hashmap中,如果是,则增加其计数器。
答案 2 :(得分:0)
将元素添加到数组的功能:
public static <T> void addToArray( final ArrayList<T> array, final T element ) {
if ( array.size() > 0 )
{
int count = 0;
for ( T item : array )
if ( item.equals( element ) )
{
++count;
if ( count > 1 )
throw new IllegalArgumentException( "Too many repeated values." );
}
if ( array.get( array.size() - 1 ).equals( element ) )
throw new IllegalArgumentException( "Same as tail value." );
}
array.add( element );
}
测试一下:
public static void main( final String[] args ) {
final ArrayList<String> strings = new ArrayList<String>();
addToArray( strings, "apple" );
addToArray( strings, "banana" );
addToArray( strings, "apple" );
addToArray( strings, "cherry" );
try {
addToArray( strings, "cherry" );
} catch( IllegalArgumentException e ){
System.err.println( e.getMessage() );
};
try {
addToArray( strings, "apple" );
} catch( IllegalArgumentException e ){
System.err.println( e.getMessage() );
};
System.out.println( strings );
}
System.err输出
Same as tail value.
Too many repeated values.
System.out输出
[apple, banana, apple, cherry]
答案 3 :(得分:-1)
您可以使用该代码:
public class Deneme
{
private static Scanner input;
private static ArrayList<String> arr;
public static void main(String... args)
{
input = new Scanner(System.in);
arr = new ArrayList<>();
while (true)
{
System.out.print("Please enter a value: ");
String val = input.nextLine();
if (arr.contains(val))
System.out
.println("Please enter some other value you've already entered : "
+ val);
else
arr.add(val);
}
}
}