如何让java查看arrayList中的前一个值并返回错误,如果它与下一个相同?

时间:2014-02-06 23:35:50

标签: java arraylist

我创建了一个arrayList,创建了一个getter类,并且创建了一个方法,在我想要做的方法中执行2次错误检查... 1如果值用户要添加已经添加了就在它发出错误之前。

例如,在列表中有苹果,香蕉......如果用户再次尝试添加香蕉,则会出错。

此外,如果列表包含2个相同的值,则java不应再允许添加该类型,并且应该提供错误。

感谢。

4 个答案:

答案 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);
        }

    }

}