我在java中有$filePath = 'badges/1.png';
$path = public_path()."/".$filePath
Storage::disk('local')->get($path);
dd($contents);
,有2个方法。我想立刻将这两种方法用于我的arraylist。
在第一种方法中,我使用了方法arraylist
,因此arraylist不再具有所有元素。
对于第二种方法,我还需要 arraylist及其所有元素。但是Arraylist已不再相同了。
我正在考虑 java中的多线程。有没有其他方法可以解决这个问题?
这是我的代码:
remove()
输出
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> list = new ArrayList<String>();
// Adding items to arrayList
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
System.out.println("The arraylist contains the following elements: " + list);
method1(list);
method2(list);
}
public static void method1(List<String> list) {
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
String s = iterator.next();
if (!s.startsWith("a")) {
iterator.remove();
}
}
System.out.println("List1: " + list);
}
public static void method2(List<String> changedFilesList) {
for (Iterator<String> iterator = changedFilesList.iterator(); iterator.hasNext();) {
String s = iterator.next();
if (!s.startsWith("b")) {
iterator.remove();
}
}
System.out.println("List2:" + changedFilesList);
预期输出:
The arraylist contains the following elements: [aaa, bbb, ccc, ddd]
List of the other: [aaa]
List of the other: []
答案 0 :(得分:0)
在调用第一种方法之前复制一下列表:
List<String> list2 = new ArrayList(list);
然后,使用method1
拨打list
,使用method2
拨打list2
。
答案 1 :(得分:0)
试试这个
public static void method1(List<String> list) {
List<String> list1=new ArrayList<String>();
list1.addAll(list);
for (Iterator<String> iterator=list1.iterator();iterator.hasNext();{
String s = iterator.next();
if (!s.startsWith("a")) {
iterator.remove();
}
}
System.out.println("List1: " + list1);
}
public static void method2(List<String> changedFilesList) {
List<String> list1=new ArrayList<String>();
list1.addAll(changedFilesList);
for (Iterator<String> iterator=list1.iterator();iterator.hasNext();{
String s = iterator.next();
if (!s.startsWith("b")) {
iterator.remove();
}
}
System.out.println("List2:" + list1);
}
答案 2 :(得分:0)
由于 ArrayList 实施可克隆,您可以在调用 method2()之前使用以下内容:
final List<String> copy = (List) list.clone();
按如下方式调用 method2():
method2(copy);
答案 3 :(得分:0)
这两种方法看起来太相似了,你应该将它们合二为一。另外,以不同的方式看待它怎么样?而不是从列表中删除东西,将它们添加到另一个。
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
System.out.println("The arraylist contains the following elements: " + list);
System.out.printLn("List 1: " + method(list, "a"));
System.out.printLn("List 2: " + method(list, "b"));
}
private List<String> method(List<String> list, String filter) {
List<String> filteredList = new ArrayList<>();
for (String s : list) {
if (s.startsWith(filter)) {
filteredList.add(s);
}
}
return filteredList;
}