2016-05-24 8 views
0

Пожалуйста, мне нужна помощь в этом, если у меня есть arraylist с элементами [10, +, 20, -, 129]. Я хочу знать, как я могу удалить из-за элементов в последнем индексе в arraylist, например, удалив 9, чтобы массив стал [10, +, 20, -, 12]. СпасибоИспользование Java arraylist

+0

вы хотите удалить третью цифру в любом пункте? –

+0

Является ли это 'ArrayList'' String'? – aioobe

+0

Да, это arraylist строки –

ответ

1

В качестве своего списка строковых элементов сначала возьмите последний элемент и проверьте длину последнего элемента. Если длина равна 1, то удалите ее, иначе обрезайте один символ из последнего.

// Adding element in list 
list.add("1") 
list.add("-"); 
list.add("23"); 
list.add("+"); 
list.add("123"); 
list.add("-"); 
// Size of List 
int size = list.size(); 
// Getting Last element 
String lastValue = list.get(size-1); 
// check the length of last element 
if(lastValue.length()<=1) 
    list.remove(size - 1); 
else 
    list.set(size-1,lastValue.substring(0,lastValue.length()-1)); 

Надеется, что это позволит решить проблему

Input : [1, -, 23, +, 123, -] 
Output : [1, -, 23, +, 123] 
+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения.Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. - [Из обзора] (https://stackoverflow.com/review/low-quality-posts/12453582) – Ferrybig

+0

@Ferrybig: С нетерпением ждем, спасибо –

0

Попробуйте получить элемент в списке, преобразуйте этот элемент в строку, если он не является списком строк строк, удалите цифру, которую вы разделите методом split или substring, затем преобразуете обратно в целое число и добавьте в ArrayList. пример отправить список массива для генерации нового списка

public ArrayList<String> globalStrings; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    globalStrings = new ArrayList<>(); 
    globalStrings.add("10"); 
    globalStrings.add("+"); 
    globalStrings.add("-"); 
    globalStrings.add("129"); 

    //Before 
    checklist(globalStrings); 
    globalStrings = getNewStrings(globalStrings); 
    //After 
    checklist(globalStrings); 


} 

getNewStrings возвращает новую строку ArrayList с последним элементом индекса удален один

private ArrayList<String> getNewStrings(ArrayList<String> generateNew) { 

    String getString = generateNew.get(generateNew.size() - 1); 

    getString = getString.substring(0,(getString.length() - 1)); 

    generateNew.remove(generateNew.size() - 1); 
    generateNew.add(getString); 

    return generateNew; 
} 

Чтобы проверить список, вы можете использовать метод ниже

private void checklist(ArrayList<String > check) { 
    for(int count =0; count <check.size(); count ++) { 
     Log.e("TAG", "List " + check.get(count)); 
    } 
} 
+0

Если операция повторяется, она должна продолжать удалять последнюю цифру последнего элемента в arraylist до тех пор, пока arraylist не станет пустым. –

+0

Я только что редактировал мой пост с примерами кодов, попробуйте, чтобы ваши объекты были удалены одним int. – Franklyn

0

Я надеюсь, что в мае этого года сьютов ваши потребности:

String last = list.remove(list.size() - 1); 
list.insert(last.substring(0,last.length() -1); 

Отказ от ответственности: Поскольку я видел разнообразие элементов в вашем примере, я предположил, что список представляет собой список строк.

0
List elements = Arrays.asList("10","+","20","-","144429"); 
String str = (String) elements.get(elements.size()-1); //get value of last element 
str = str.substring(0, str.length()-1); //get all characters besides last one 
elements.set(elements.size()-1, str); //replace last element in list 
+0

Код работает нормально для нормальных чисел, но не для таких операторов, как (+, -, \) –

+0

Для одиночных символов вы получаете пустой элемент String списка. Вы можете добавить оператор 'if', чтобы удалить элемент из списка, если он состоит из одного символа. –

0

Это простая программа, чтобы решить вашу проблему. Вы можете добавить условия нулевой проверки, чтобы сделать их лучше.

 List<String> a= new ArrayList<>(); 
    a.add("123"); 
    a.add("856"); 
    a.add("85"); 
    a.add("785"); 

    String trim = a.get(a.size()-1); 
    trim = trim.substring(0,trim.length()-1); 
    if(trim.equals("")){ 
     a.remove(a.size()-1); 
    } 
    else{ 
     a.set(a.size()-1,trim); 
    } 
    System.out.println(a); 

выход: [123, 856, 85, 78]

+0

Код работает нормально для нормальных номеров, но не для таких операторов, как (+, -, \) –

+0

это будет, у вас должен быть arraylist строки типа. – sallu

+0

отредактировал ответ для удаления, если он пустой, после удаления отдельных символов, например +, - – sallu

0

Попробуйте Как это может быть работа для вас

ArrayList<String> arrayList = new ArrayList<>(); 
//add your data to this list 
//suppose 
// arrayList.add("10"); 
// arrayList.add("+"); 
// arrayList.add("20"); 
// arrayList.add("-"); 
// arrayList.add("129"); 
btnClick = (Button)findViewById(R.id.btnClick); 

btnClick.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(arrayList.size() > 0) { 
       String lastOne = arrayList.get(arrayList.size() - 1); 
       String newOne = removeLastChar(lastOne); 
       arrayList.remove(arrayList.size() - 1); 
       if (!newOne.equalsIgnoreCase("")) { 
        arrayList.add(arrayList.size(), newOne); 
       } 
       for (String item : arrayList) { 
        Log.d("TAG", item); 

       } 

      } 
     } 
    }); 
} 
public String removeLastChar(String s) { 
    if (s == null || s.length() == 0) { 
     return s; 
    } 
    return s.substring(0, s.length()-1); 
}