Пожалуйста, мне нужна помощь в этом, если у меня есть arraylist с элементами [10, +, 20, -, 129]. Я хочу знать, как я могу удалить из-за элементов в последнем индексе в arraylist, например, удалив 9, чтобы массив стал [10, +, 20, -, 12]. СпасибоИспользование Java arraylist
ответ
В качестве своего списка строковых элементов сначала возьмите последний элемент и проверьте длину последнего элемента. Если длина равна 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]
Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения.Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. - [Из обзора] (https://stackoverflow.com/review/low-quality-posts/12453582) – Ferrybig
@Ferrybig: С нетерпением ждем, спасибо –
Попробуйте получить элемент в списке, преобразуйте этот элемент в строку, если он не является списком строк строк, удалите цифру, которую вы разделите методом 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));
}
}
Если операция повторяется, она должна продолжать удалять последнюю цифру последнего элемента в arraylist до тех пор, пока arraylist не станет пустым. –
Я только что редактировал мой пост с примерами кодов, попробуйте, чтобы ваши объекты были удалены одним int. – Franklyn
Я надеюсь, что в мае этого года сьютов ваши потребности:
String last = list.remove(list.size() - 1);
list.insert(last.substring(0,last.length() -1);
Отказ от ответственности: Поскольку я видел разнообразие элементов в вашем примере, я предположил, что список представляет собой список строк.
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
Код работает нормально для нормальных чисел, но не для таких операторов, как (+, -, \) –
Для одиночных символов вы получаете пустой элемент String списка. Вы можете добавить оператор 'if', чтобы удалить элемент из списка, если он состоит из одного символа. –
Это простая программа, чтобы решить вашу проблему. Вы можете добавить условия нулевой проверки, чтобы сделать их лучше.
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]
Попробуйте Как это может быть работа для вас
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);
}
вы хотите удалить третью цифру в любом пункте? –
Является ли это 'ArrayList'' String'? – aioobe
Да, это arraylist строки –