我有一个书单如下
public static ArrayList<List<String>> booksList = new ArrayList<List<String>>();
Run Code Online (Sandbox Code Playgroud)
并填充如下所示
booksList.add(Arrays.asList("Coders at Work", null));
booksList.add(Arrays.asList("Code Complete",null));
booksList.add(Arrays.asList("The Mythical Man Month",null));
booksList.add(Arrays.asList("Don't Make Me Think",null));
booksList.add(Arrays.asList("The Pragmatic Programmer",null));
Run Code Online (Sandbox Code Playgroud)
我想将项目添加到特定行的列表中 Arraylist
booksList.get(0).add("BUYED");
booksList.get(0).add(0,"BUYED");
Run Code Online (Sandbox Code Playgroud)
但它不起作用.如何添加更多物品?或者有更好的方法来处理这种情况吗?
在开始之前,我想指出这篇文章不是重复的:
事实上,我想知道为什么它在我的示例代码中表现得很奇怪.根据我的理解,我们可以实例化一个静态内部类,如下所示:
new OuterClass.InnerClass();
Run Code Online (Sandbox Code Playgroud)
但在我的示例代码中,我能够实例化静态内部类,如:
new InnerClass();
Run Code Online (Sandbox Code Playgroud)
我将把我的示例代码放在这里:
import java.util.*;
class GFG {
static class ListComparator implements Comparator<Integer>{
@Override
public int compare(Integer o1, Integer o2){
if(o1>o2){
return -1;
}
else if(o1<o2){
return 1;
}
else
return 0;
}
}
public static void main (String[] args) {
//code
List<Integer> list = new ArrayList<Integer>();
list.add(3);
list.add(1);
list.add(2);
list.add(4);
Collections.sort(list,new ListComparator());
for(Integer i : list){
System.out.println(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码运行没有任何错误,我按降序输出.任何人都可以解释我如何能够直接实例化这样的静态内部类:new ListComparator();
我在这种情况下期待错误,但对输出感到惊讶.我知道我的静态内部类实现了Comparator接口,但我想知道使它静态会引起与静态类行为的冲突.但令人惊讶的是没有发生,我很好奇为什么它没有发生?
我正在尝试构建一个多字母密码,但是我找不到将更小的列表添加到更大的列表中的方法,我已尝试使用列表推导,但仍然无法做到.请帮忙!我希望较小的列表继续将相同的数字添加到较大的列表中
所以我可以说我有2个这样的列表:
x = [1,2,3]
y = [4,5,6,7,8,9]
z = [i + j for i,j in zip(x,y)]
Run Code Online (Sandbox Code Playgroud)
结果如下
print(z)
[5,7,9]
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做:
[5,7,9,8,10,12]
Run Code Online (Sandbox Code Playgroud)
意思是它不断向更长的列表添加相同的数字,谢谢你的帮助
我要做的是将一个位置列表传递给地图活动并将标记放在这些位置上.我已尝试在MainActivity中使用
public class MainActivity extends AppCompatActivity implements Parcelable {
ArrayList<Location> locs=new ArrayList<>();
...
locs.add(location);
...
Intent in = new Intent(context,MapsActivity.class);
in.putExtra("setlocations",locs);
startActivity(in);
...
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeList(locs);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在MapsActivity的onCreate()中
Bundle extras = getIntent().getExtras();
if(extras != null){
locs=(ArrayList<Location>)getIntent().getParcelableExtra("setlocations");
addMarkeratLocation();
}
Run Code Online (Sandbox Code Playgroud)
该addMarkeratLocation()方法使用locslist来使用for循环添加标记
public void addMarkeratLocation(){
BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.mipmap.dott);
LatLng addpoint=new LatLng(0.0,0.0);
for(int i=0;i<locs.size();i++){
addpoint = new LatLng(locs.get(i).getLatitude(), locs.get(i).getLongitude());
mMap.addMarker(new MarkerOptions().position(addpoint).icon(icon));
}
mMap.moveCamera(CameraUpdateFactory.newLatLng(addpoint));
} …Run Code Online (Sandbox Code Playgroud) 我在这里看到了很多关于如何使用ArrayList和HashMaps的好解决方案,但重点是我仍然无法解决我的问题.
所以,这个想法是很少有人喝啤酒,葡萄酒和可乐.所以,它看起来像(例如):
Steve wine
Steve cola
Ben cola
Frank wine
Ben cola
Ben cola
Frank wine
Run Code Online (Sandbox Code Playgroud)
最后,我需要计算他们每人喝多少杯饮料.所以,答案应该是这样的:
Steve wine 1
Steve cola 1
Ben cola 3
Frank wine 2
Run Code Online (Sandbox Code Playgroud)
我的想法是创建一个对象Person(String name,String drink).然后我将所有人都放到ArrayList中.之后我创建了HashMap,并希望在键不存在时添加新Person,如果key已存在则增加到1.
Map<Person, Integer> map = new HashMap<Person, Integer>();
for (Person p : persons)
{
if (map.containsKey(p)) {
map.put(p, map.get(p)+1);
} else {
map.put(p,1);
}
}
Run Code Online (Sandbox Code Playgroud)
它不起作用.它只返回我的结果:
Steve wine 1
Steve cola 1
Ben cola 1
Frank wine 1
Ben cola 1
Ben cola 1
Frank wine 1
Run Code Online (Sandbox Code Playgroud)
所以,据我所知,这应该是其他一些技巧.也许你还可以告诉任何其他关于如何计算饮料杯数而不是使用HashMap的想法?非常感谢!
我想补充的对象DataPerLabel,以我Arraylist allData的代码如下DataPerLabel:
class DataPerLabel
{
public String labelName;
public String labelAdress;
public String dataType;
public DataPerLabel(String labelName, String labelAdress, String dataType)
{
this.labelName = labelName;
this.labelAdress = labelAdress;
this.dataType = dataType;
}
public String getLabelName()
{
return labelName;
}
public String getLabelAdress()
{
return labelAdress;
}
public String getDataType()
{
return dataType;
}
}
Run Code Online (Sandbox Code Playgroud)
在下面的代码中,我尝试将对象添加DataPerLabel到my arraylist:
submitButton.Click += (sender, args) =>
{
String label = textboxLabel.Text;
String adress = textboxAdress.Text;
String …Run Code Online (Sandbox Code Playgroud) 我使用静态arraylist创建了一个Coin类,它存储了所创建的类的每个实例,但我需要用初始实例启动该列表,而且我没有想到如何在不添加它的情况下执行它(因为冗余代码) ), 有什么建议?
public class Coin {
private static ArrayList<String> coinNames = new ArrayList<>();
private static ArrayList<String> coinAbbreviations = new ArrayList<>(Arrays.asList("CLP"));
private static ArrayList<Coin> coins =
new ArrayList<>(Arrays.asList(new Coin("Pesos chilenos", "CLP", 1f, "CLP")));
private static HashMap<String,Float> exchangeRates;
private String coinName;
private String coinAbbreviation;
private Float coinValue;
private String unit;
public Coin(String coinName, String coinAbbreviation, Float coinValue, String unit) {
assert !coinAbbreviations.contains(coinAbbreviation) : "Coin abbreviation already used";
assert coinAbbreviations.contains(unit) : "Coin unit non existent.";
assert !coinNames.contains(coinName) : "Coin name already used."; …Run Code Online (Sandbox Code Playgroud) 我的朋友做了一个“游戏”,他让您使用一堆if-else语句选择剑和东西。我试图通过制作一个基于文本的游戏来推翻他,其中随机怪物从ArrayList中生成。每个怪物都需要有一个名称和hp值。我需要能够选择一个随机的怪物,并且我想做到这一点,所以我可以使用以下命令对ArrayList进行加扰:
Collections.shuffle(Monster);
Run Code Online (Sandbox Code Playgroud)
我之前制作过多维数组,但不确定如何在每个位置使用两个值制作ArrayList。
到目前为止,这是我的尝试:
List<String> Inventory = new ArrayList<String>();
List<double[]> Monsters = new ArrayList<double[]>(2);
List<String> Monster = new ArrayList<String>();
Monster.add("Goblin");
Monster.add("Josh");
Monster.add("Gremlin");
Monster.add("Unicorn");
Monster.add("Possesed Elf");
Monster.add("Shmorple");
// Can I use Monsters.add(Monster);?
Run Code Online (Sandbox Code Playgroud)
编辑:我完成了游戏,最终学习了如何使用类制作对象;谢谢所有提出建议的人。我从一些回应中学到了很多!
java.util.List<java.util.List<String>> statuses = new java.util.ArrayList<>();
java.util.List<String> temp = new java.util.ArrayList<>();
System.out.println("yoi :" + temp.size());
statuses.add(temp);
System.out.println("warui :" + statuses.get(0).size());
temp.clear();
System.out.println("kirai :" + statuses.get(0).size());
Run Code Online (Sandbox Code Playgroud)
控制台输出:
yoi :31
warui :31
kirai :0
Run Code Online (Sandbox Code Playgroud)
当我清除我曾经插入的临时列表时,为什么在其他列表中的地球列表中为空?
如何ArrayList在Java中执行脏检查?
我有一个对象
Animal
{
String animalName;
String animalType;
String animalPlace
}
Run Code Online (Sandbox Code Playgroud)
我有两个清单:
List<Animal> animalList1 = new ArrayList<Animal>();
List<Animal> animalList2 = new ArrayList<Animal>();
Run Code Online (Sandbox Code Playgroud)
在第一个列表中,我有值:
[0][lion,Carnivorous,Africa]
[1][tiger,Carnivorous,Zambia]
[2][Goat,Herbivorous,Zimbabwe]
Run Code Online (Sandbox Code Playgroud)
在第二个列表中,我有以下值:
[0][lion,Carnivorous,Africa]
[1][tiger,Carnivorous,Zambia]
[2][Goat,Herbivorous,Norway]
Run Code Online (Sandbox Code Playgroud)
在第二个清单中,animalPlace索引2的元素已从津巴布韦变为挪威.如何比较两个列表值和已更改的值将该对象放在单独的列表中?
List<Animal> animalList3 = new ArrayList<Animal>();
[0] [Goat,Herbivorous,Norway]
Run Code Online (Sandbox Code Playgroud)
通过使用for循环比较列表,我知道传统的方法:
for (int i = 0; i < list1.size(); i++)
{
for (int j = i+1; j < list2.size(); j++)
{
// compare list1 and list2 values
}
}
Run Code Online (Sandbox Code Playgroud)
有更快更好的方式吗?