我正在尝试在名为的ArrayList上执行以下流操作parts:
parts
.stream()
.map(t -> t.toLowerCase())
.distinct()
.sorted()
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
其中parts包含这样的字符串:
Adventures
in
Disneyland
Two
blondes
were
going
to
Disneyland
....
Run Code Online (Sandbox Code Playgroud)
除了查看调试器之外,parts根本没有改变.不确定我是否错过了这个过程的一些步骤?
我有一个包含用户信息数组的ArrayList(~900条目):
[swaschit, Sophia Waschitz, Dormant, Inactive, 1/1/2018]
[kolanday, Kyle Olanday, Dormant, Inactive, 1/1/2018]
[npowers, Neil Powers, Assigned, Active, 2/11/2018]
Run Code Online (Sandbox Code Playgroud)
我想从这个列表中生成一个只包含每个对象的第一个元素的数组:
[swaschit, kolanday, npowers, ...]
Run Code Online (Sandbox Code Playgroud)
这样做最有效的方法是什么?
我的程序有六个类,我相信我的大多数代码是正确的,但是当我运行它时,没有打印语句发生,相反,该程序将永远继续运行而没有输出。如果我为更大的数字(100+)运行模拟,则会导致大量的内存泄漏。我似乎找不到问题所在,但是代码无法正确执行。
****(我在哪里执行程序以及我认为错误在哪里)
import java.util.*;
public class {
public static void main(String[]args){
SubSim simulate=new SubSim();
ArrayList<Wolf>WolfArrayList=new ArrayList<>();
ArrayList<Moose>MooseArrayList=new ArrayList<>();
ArrayList<Grass>GrassArrayList=new ArrayList<>();
for (int i=0;i<simulate.getInitialWolves();i++){
WolfArrayList.add(new Wolf(simulate));
}
for (int i=0;i<simulate.getInitialMoose();i++){
MooseArrayList.add(new Moose(simulate));
}
for (int i=0;i<simulate.getMaxX();i++){
for (int j=0;i<simulate.getMaxY();j++){
int grassroll=(int)(Math.random()*5);
if (grassroll==1||grassroll==2||grassroll==3||grassroll==4){
GrassArrayList.add(new Grass(simulate,i,j,2));
}
else{
GrassArrayList.add(new Grass(simulate,i,j,0));
}
}
}
simulate.setGrassArrayList(GrassArrayList);
simulate.setMooseArrayList(MooseArrayList);
simulate.setWolfArrayList(WolfArrayList);
System.out.println("Ticks Wolves Moose");
for(int i=1;i<=20;i++){
System.out.printf("%d %d %d\n",(i-1),simulate.getWolfPop(),simulate.getMoosePop());
simulate.run();
}
}
}
Run Code Online (Sandbox Code Playgroud)
**课**
import java.util.*;
public class extends Simulator{
//making private variables
private ArrayList<Grass> GrassArrayList;
private …Run Code Online (Sandbox Code Playgroud) 我正在研究OOP,并且遇到了数组列表。我想知道remove()函数的实际工作原理,以及最有效的使用方法。
删除所有“ BB”的第一种方法
public class ArrayListTest {
public static void main(String args[]){
ArrayList<String> Alist = new ArrayList<String>();
Alist.add("AA");
Alist.add("BB");
Alist.add("AA");
Alist.add("AA");
Alist.add("AA");
Alist.add("BB");
System.out.println("Original ArrayList : " + Alist);
int n = 0 ;
for (int i = 0; i < Alist.size(); i++){
n++;
Alist.remove("BB");
}
System.out.println(n);
System.out.println("Modified ArrayList : " + Alist);
}
}
Run Code Online (Sandbox Code Playgroud)
输出
run:
Original ArrayList : [AA, BB, AA, AA, AA, BB]
4
Modified ArrayList : [AA, AA, AA, AA]
BUILD SUCCESSFUL (total time: 0 seconds) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用用户输入将元素添加到ArrayList中。问题是当我尝试添加一些东西并要求将其列出时,它没有显示在列表中。
我以为这是read方法的问题,但是我不确定它是否有任何问题。另一件事是事实,添加元素的方法不在循环中,我尝试使用循环,但仍然无法正常工作。有与具有对参数的构造一部电影类title,year,genre,price和toString方法。
预期结果:添加电影后,它应列出添加的电影。实际结果:add方法要求输入,但是当我使用list方法时,它不会列出我添加的内容。
所有,
我有一个对象
public class Device {
public String getUserId() {
return userId;
}
public String getDeviceId() {
return deviceId;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了所有的价值清单
List<Device> uList = getList();
Run Code Online (Sandbox Code Playgroud)
在列表中,我有一个基于userId的重复值现在我要获取“唯一”列表,该列表将删除userId的重复项
我要如何实现它,我是Java的新手
我正在使用sort方法,并且我正在尝试,似乎找不到解决方案。谁能给我一个建议?输出总是看起来像一个数组。可以在字符串或整数之间使用其他格式(如换行符)吗?有什么办法可以处理输出?
List<String> list = new ArrayList<>(set);
Collections.sort(list);
out.println("Number of Words: " + list.size());
out.println("Sorted Order: ");
out.println(list);
Run Code Online (Sandbox Code Playgroud)
我的输出
Sorted Order:
[APPLE, BANANA, CHAIR, DOOR]
Run Code Online (Sandbox Code Playgroud)
预期产量
Sorted Order:
APPLE
BANANA
CHAIR
DOOR
Run Code Online (Sandbox Code Playgroud) 说我有以下清单
full_list
ID NAME
1 Apple
1 Banana
2 Carrot
1 Mango
2 Spinach
3 BMW
3 Opal
Run Code Online (Sandbox Code Playgroud)
有了这个列表,我想根据ID如下所示的列创建分组列表
fruits_list veggies_list cars_list
ID NAME ID NAME ID NAME
1 Apple 2 Carrot 3 BMW
1 Banana 2 Spinach 3 Opal
1 Mango
Run Code Online (Sandbox Code Playgroud)
我正在尝试用Arraylist<ArrayList<CustomObject>>。但这增加了代码的复杂性。我做错了吗?有没有更清洁的方法可以做到这一点?
PS:数据输入不固定。我无法明确定义带有条件的列表(即if(id == 1),if(id == 2)等)。这应根据传入数据动态完成。
从我所看到的所有排序方法示例中,我从未遇到过传递比较器定义的示例。如果比较器被设计为返回负数,正数或0来对对象进行排序,那么排序方法对该信息有何作用?排序方法如何从比较器定义中获取有意义的信息并执行其操作?
这是有问题的排序方法:
public void sort() {
library.sort(new BookComparator());
}
Run Code Online (Sandbox Code Playgroud)
这是整个Comparator类:
import java.util.Comparator;
public class BookComparator implements Comparator<Book> {
public int compare(Book a, Book b) {
if(a == null || b == null) {
throw new NullPointerException();
}
int result = 0 ;
if(a.getAuthor() == null) {
if(b.getAuthor() != null) {
result = -1;
}
} else if(b.getAuthor() == null) {
result = 1;
} else {
result = a.getAuthor().compareTo(b.getAuthor());
}
if(result !=0) {
return result;
}
if(a.getTitle() == null) { …Run Code Online (Sandbox Code Playgroud) 我有两个类,一个超类和一个继承该超类的子类。我想将两个数组列表合并为一个。这两个数组列表具有不同的类型。一个是超类列表,另一个是子类。
这是我的三个列表:
public ArrayList<subClass> list1;
public ArrayList<superClass> list2;
public ArrayList<? extends superClass> combined; // so this accepts all subclasses as well
Run Code Online (Sandbox Code Playgroud)
然后,我试图完成以下任务:
combined.addAll(list1);
combined.addAll(list2);
Run Code Online (Sandbox Code Playgroud)
编译器说:
addAll in arrayList cannot be applied to list1
addAll in arrayList cannot be applied to list2
Run Code Online (Sandbox Code Playgroud)
但是:combined = list1;没有错误。使用等号时,我无法将两个列表合并。
我该如何实现?
arraylist ×10
java ×10
arrays ×2
comparator ×1
compareto ×1
inheritance ×1
java-stream ×1
memory-leaks ×1
oop ×1
performance ×1
sorting ×1